I’ve been working on this Story Engine in stealth mode for several years now. As it turns out, it’s much harder than writing a 3D graphics engine. Basically, a graphics engine has a solid foundation of math and science that is stable for one to build structure on top of. Instead, a story engine has a spongy muddy foundation— because story and narrative content renders completely inside the player’s mind and not on the screen. Thus, you can’t easily capture it with science and math. Whereas you can compare CG rendering techniques to the actual real-life lighting and immediately identify the flaws to improve your rendering algorithms, there is no easy way to discover your flaws in a story engine in order to improve it.
This makes building an interactive narrative engine from scratch a very risky affair. You have to finish your whole game before you can see the flaws and mistakes, whereas in rendering algorithms you can look at particular rendering issues one at a time in isolation (for example, sub-surface scattering) and improve them independently and orthogonally of other rendering techniques. A narrative engine is judged as a whole by its finished content rather than the sum of its parts, so it’s difficult to build it piecemeal by perfecting independent chunks of it piece by piece. 3D render engines have strict separation of concerns throughout its entirety. A story engine is the opposite of that with everything dependent upon everything else by virtue of its very nature as a human artform. That makes it quite a challenge to build it coming from the experience I have had building 3D engines.
A graphics engine has pretty intuitive criteria for judging something to be “correct” or “incorrect” in terms of whether the code is working or not. You simply look at the thing on the screen and ask yourself if it basically does what you intend it to do. Sure, basic lighting techniques aren’t close to realistic lighting if you look with a trained eye. However, at a certain point, any rendering technique gets close enough and you’ll know fairly well that it will work for a large proportion of typical cases.
If it doesn’t look good enough, you can just keep going as you compare it to actual real lighting. You stop because you get diminishing returns for the amount of work required to improve how good it looks. And that will also be a function of what your competitors have put into the market and what the hardware is capable of. After a certain threshold in 3D rendering, most consumers will not notice the difference unless it’s rendering human characters too close to the edge of the uncanny valley. At that point you stop with realistic rendering styles and choose more abstract or cartoony styles and your art direction matters more than your render engine.
In the history of automobile manufacturing, this is akin to the point where top speed had become no longer the chief selling point of automobiles. Instead of top speed, the main selling points became such things as luxury and safety and aesthetics and other more “human” concerns. We are at this juncture in games, as well. However, AAA titles still must have outstanding rendering in the same way that for a while top speeds for automobiles were no longer a strong selling point, yet were still a prerequisite for selling cars for a long time even after driving 120 mph was not really something that anyone wanted to do or actually cared about to buy in a car.
Despite these challenges with writing the story engine, I believe that I have found some structural commonalities in interactive narrative design that can translate into a competitive edge over competitors’ offerings in the arena of interactive narrative design. I have, to the best of my ability, identified the areas in which my 3D graphics engine background allows me to recognize structure and patterns in narrative designs that can translate to a unique product that differentiates itself by virtue of the competitors not being able to politically nor financially afford the kind of random walk style of learn-as-you-go engine development that I can afford myself. This style of development for an engine is expensive and scheduleless that for a traditional studio is a nightmare to budget and staff. This is one small area where an indie one-person shop such as myself has a very minor advantage.
Because traditional studios can’t afford to wander and explore and to trust their people to come to some sort of profitable conclusion, what I am making will seem to come out of the nowhere from a nobody— namely me. However, what big commercial studios don’t understand is that I personally have always been overlooked by them throughout my career. Yet during all that time, I have been constantly honing and refining my skills as a game developer and programmer. So it is not entirely out of the blue, but has been a long time coming to fruition. I feel like I have reached a mastery of my craft and I am enjoying every day adding more capabilities to the story engine that still surprise and delight me.
Even so, I am still not ready to show anything. I keep getting closer and closer. But my instinct for what is a good cost-benefit slows me down because when I random walk into a feature that I think will save time or improve quality down the line, I work on it which halts my progress towards a showable demo. But it is progress in a different way. It’s very grindy, but I cannot ask (nor pay) anyone to do this grind for me. Only I know what the right balance of a good cost-benefit is to the features I’m adding. I have a pretty good vision and feel for the product now. At the beginning of this project, my scope was too wide and constantly expanding— because I am too curious about everything and all the possibilities are too intriguing to abandon for the sake of progress. I have a pretty good handle on the scope now, but alas I am still so easily distracted by cool features that I think will be useful later on down the line that it seems like I’m not moving forward.
As I do move forward, I must refactor and retrofit previous quick hacks to accommodate the more solid systems I put in. This seems like negative progress since the game content doesn’t make progress when I work on system features rather than adding content. But adding content on top of a shaky system just feels wrong, so when I come to a point where I find myself adding content on top of a system that could be improved, I can’t help but pause the adding of content to work on the system until it has a better chance of being production-ready.
This is quite a lot of info for a first update on the story engine. However, it is long overdue. I am not even a free range programmer anymore. I am tied to a place that allows me to spend more quality programming time on this thing now.
But I don’t like to talk or write about things until it’s done. I’ve had a history of people not believing me. So showing a finished concrete thing that demonstrates exactly what’s in a very abstract form in my head is how I’ve been able to communicate my ideas to other people. I’ve done this several times with 3D render engines. I believe that this story engine is the same kind of thing. It’s not really enough to talk about it in the abstract. It has to exist and function and be capable of doing things that you don’t see in other interactive narrative systems to be worthwhile to talk about.
Also, my personal problem is that I have way too many ideas that it distracts me from execution. So, it’s quite common to hear some crazy ideas from me that I’ll never get around to completing. And I’m kind of terrible at completing things because in some ways my imagination is too good— such that it makes them so concrete and real to me, that I lose interest in finishing it and making it real for everyone else besides me.
I seem to feel that if I can imagine it, it’s good enough because it’s real to me. Well, part of the exciting thing for me now is that as it becomes more and more real, I begin to discover more and more capability and freedom of expression within the system that I could not envision until I got to the point after I made it exist. So once it becomes real, it actually engenders more ideas and more imagination and that’s what keeps me going. That’s a key dynamo to keep me self-motivated that I had forgotten had occurred in the late development stages of my 3D engines. And that’s why I make this update now rather than after I’ve finished the thing which was the original plan. I have more confidence that I’m not going to give this up as some fanciful fever dream as I have with so many other ideas that have wandered into my brain and trickled out to die somewhere. I never ever had confidence that I would finish anything. It’s kind of a wonder that I finished any of those aforementioned 3D engines now that I have had a long couple of years trying to find self-motivation. But now I have discovered the secret— that late in development, this threshold can be crossed where I reach the turbo or dynamo stage where there’s enough solidity to all of the previous work that you can stand on top of the edifice of it all and see much farther out into the landscape and be excited about all of that unexplored territory to conquer.
So, I’m just grinding away at it, making it more and more real. I have gotten close to reaching my secondary goal which is to make the story engine so pleasant to create content in that I’m mostly writing content (which I kind of loathe doing) rather than writing systems. I think once I reach that point, it becomes worthwhile to show off to actual content creators who do this sort of thing for a living and ask them what I could do to really impress them and make their content creation more enjoyable. But first, I have to get to the point where I am enjoying writing content myself. I think once I reach that critical threshold, then I can begin considering polishing it up for other people to lay their eyes on it.
And so ends update 1. I don’t think I’ll make many more updates— I have lots more grinding to do. This pretty much sums up where I’ve been the last couple of years. I’m still going kind of slow, but I’m still going and haven’t gotten bored which I think is pretty amazing given my easily distracted brain.
April 21, 2021