The original blog is from Itch.io
The curse does not end with dreams that are dreaded, as the weight of the binds does not fade away; numbing the soul and scorching the beast. There is no warmth that is loving to embrace, as the depths of the caves have long forgotten the dwarf that was once above.
Aimless is the head that cannot breathe; dragging from wall to wall. Only pity that remains in the dark. The truth that was once served, now shattered, blown away by the wind. The walk is no more: stale as the bread of the old.
The shine of a candle pales with moments pass, as the mountain does not oblige, nor listen to the plea. As the cold stones stand strong and proud, keeping the dwarf in its grave.
Table of contents
- The dwarf that is no more
- Time to compose
- The knot in the animation
- Keeping the gate shut (doing business)
- Another loading screen
- The (re)make of a jukebox
- Lighting, lighting, lighting
- A bit of headache
- Closing thoughts
1. The dwarf that is no more
It seems that the years of detrimental and soul-crushing labor of “needing” to create something truly “spectacular” has finally caught up with me (this all has to do with marketability and trying to build an audience). The constant force of anxiety of chasing the exceptional, combined with awful circumstances, working with nothing but sticks and stones, has proven to be such a massive burden that it has long clouded my judgment and health; not fully realizing the damage it has done.
Arriving at this blog post was something that seemed increasingly impossible, due to the mounting of all the events. Some will be discussed below, while others not. And even now, whilst brushing up the draft, all feels lost. More than ever.
This may sound overly pessimistic, however faith is just a thin veil against reality that is toughened, and the chances of wanting to survive as an artist are next to none; more of that below.
2. Time to compose
Sample song
Much like my previous soundtrack this too suffered from the same “disease” (which painfully echoes through the somewhat trained ears of mine): It's flat, boring, rigid and cumbersome, riddled with unfinished/half attempts of motifs that go nowhere and serve no purpose just linger above. This mostly comes from the library itself, then not having enough time and space to compose (to let ideas develop and mature), which is extremely limited at this point, and forces my hand into submission with its one kind of rhythm and tones (of the samples); ultimately creating a linear and amateurish experience.
This all proved to become such an excruciating phenomenon this time around (although composing the last one wasn’t a cakewalk either, for well over a month) as both the internal and external pressure kept building, wanting to produce something new with extreme haste, that it often pushed me away from the keyboard, because it did not want to yield to any form of convention (and often was off in the tone/mood). All seemed like the exact ordeal when you see a toddler hoping to push a square into a round hole in the game of shapes.
When you claim to be an indie developer with no budget, no community, no nothing, the bar is set pretty high: You’ve to wow people from day one if you wish to make it. Not having the ability to push through the limit of “boring”, solely for not being able to afford it, just caused an endless headache, mixed with the dire need of wanting to express oneself (to create actual music that “could” stand proud next to famous orchestral pieces, well at least that’s the vision it’s trying to achieve).
To be fair these libraries are free, and one of the best sounding on the market (in terms of them being inexpensive). However, music does not stop at simple tones, as melody and rhythm go hand in hand. All of which are above the range of my tools, which would be crucial to not just set my music apart (from other’s), but to make it unique and memorable. The latter was somewhat offset with trying to create short melodies, much like in the previous album; as the quality may not be perfect, but if there’s something to draw your attention to, then the effort was not a total waste after all.
This all, combined with the inability to create with true freedom, something that is yet to become the staple of my work (as years and years were spent firefighting), to create within these extremely tight restrictions have pushed me closer to the edge (that is, if there was one to begin with). Being limited to a dozen or so tracks before my DAW crashed (seen in the picture above), and the almost absent dynamics (even the volume doesn't work most of the time), just added more to the joy.
That being said, being accustomed to such circumstances meant that now obstructions are viewed as not a matter of “Why?”, but “How long?”. As efficiency and optimization long took over. Some would view this as a positive, but damn… would like to take a long break from all of this, to never look back. As limits do enhance creativity, but doesn’t replace the need for maturing.
3. The knot in the animation
The primary (rushed) goal of this update was to provide a tangible insight of what the actual game would look like; well parts of it, as there are other aspects yet to be built (speaking of interactions like choosing options, or accessing tiny minigames). As this game heavily centers around Interactive Fiction (it’s one of the main selling points), the need to showcase how dialogues will be handled became top priority. Not mentioning the fact that so far there was no gameplay shown (only scenes and character creation). Thus, the bar was set high once again.
My current knowledge comes from Blender 2.92, so it may be a bit out of date. However, in this version, there are things that make the life of an animator difficult (like the inability to snap keyframes to keyframes, such a simple thing but vital for production, as when you wish to overwrite an existing key, you can't simply drop onto it, because it not always works and not precise enough (say when scaling the timeline, or browsing it), hence snapping would be quite useful): Some are plainly related to how constraints work(ish). Some do as you’d expect, some not so much.
A recurring problem was having to deal with Transform Deltas, as more often than not, constraints for limits (say for distance) don’t update an object’s physical location, only the visuals. Which meant that if the constraint is removed, the object bounces back to its actual location, or causes other anomalies along the way (the constraints that do have “affect transform” doesn’t seem to work either). This meant that with every step, transforms needed to be updated (luckily shortcuts came for the rescue). Unfortunately for me, sometimes it broke the system so much so that it broke the transform values all together (aka. rotating an object a little caused a massive 100x multiplier). And had no idea why exactly this happened (still not sure to this day). So every time this occurred, a portion of the rig needed to be replaced, when it got really out of hand (as parenting and setting/re-setting transforms didn’t go well).
One would think that after tackling a handful of projects over the years, and especially after working on this monstrosity (with over 600 bones, complex-ish rig, manually animated over 6 months), no surprises would come, at least on the level my skills are at. This could not have been further from the truth, partially because of how different my previous projects were. Knowing the tools is one thing, but often unforeseen consequences could arise from never-been treaded paths (like having to only animate sections of a rig).
Because of how certain post-processing effects work in the game (mostly due to cell-shading, which flattens everything and disables transparency), a lot of VFX had to be done “in camera”, and animated by hand. Which is a challenge in itself, as you need to get creative if you wish to achieve certain effects (this was akin to my last commercial project, where a transitional scene was fully hand animated (dust particles flying across, simulating the traversal of great distances), where normally particles would’ve been used, but the limits of mobile development prevented such techniques). This was the case with the animation for the Gate as it appeared out of thin air. What was surprisingly annoying were the Ravens (see them here in action). Animating the immortal was more-or-less just time consuming (a month of time).
Took around 3 days to weight-paint and rig the model (not sure how many ravens this meant), and fix the ongoing issues, as aforementioned, wasn’t sure why these issues kept happening, but everything broke down at one point (after finishing a step in the animation): Bones misaligned, the IK system started to freak out, control points gone missing, the armature moved, then the model moved (which caused mild panic to re-paint everything, but managed to fix it without extra work), then the weights would break, sometimes the parent-child relationship broke or caused issues, in others the scale of measurements broke down (e.g, those tiny rotation angles caused 100x multipliers as said, which wrecked the animation curves, which turned out to be because of the applied transformation delta), parts had to be swapped out after extensive googling and so forth. All felt like a curse, and gave that familiar sense of impostor syndrome.
Misalignment issues showcase
One solution was to constantly spam the “apply visual transform” shortcut, to ensure at least the objects (the control rig) is in place (as in the visual and physical location matched, parented or not). However at some point an entirely new FK rig had to be made (not all parts use IK, well technically not), which reminded me of that asteroid/particle animation mentioned above.
Then there were issues cleaning up Réa (the immortal, the main NPC here): was relying heavily on using empties, however those don’t snap in the viewport (they’re not considered object by Blender), which meant that all control points that were empties needed to be changed (for all models).
The final rig for Réa
Spent a lot of time hunting things and making sure that all worked well, and pushed through others because work had to be done; couldn’t stall the momentum for one minute, as that would’ve stopped production entirely, so endured these annoyances for the greater good.
Amidst all this came the issue with parenting, which is why constraints were in heavy use in the first place. Because when you create a control rig you need to be aware of one tiny detail that can derail your efforts (essentially rendering weeks/months of work useless), that whether a part needs to be parented to the main “chassis” or not (wherever or whatever it may be). As the moment you parent something, it loses it’s original coordinate system, and becomes local (to its parent). If you have legs for example, and you wish to staple them to the ground, well then it becomes an issue when you aren’t using global coordinates (that’s one of the cause of the dancing/sliding feet, the other one is not using proper IK). And if you realize this, way into animating, all the keyframes need to be deleted (because they’re in the wrong transformation matrix). Of course, theoretically those keys could be translated from the parent, but that usually handled by coding a script, which was out of my pay-grade as you’d expect (Google wasn’t helpful either). So things that needed real world coordinates, had to remade them all.
Then came something that felt like a cold shower when was trying to render the immortal: Jitter errors right when a much needed video was about to drop. Was sort of fine with it, whilst troubleshooting (even rendered fine in a prior test for the ravens), but when it came to put it in production (in engine as well), it became the worst as these unwanted spikes (such as one in the image below) took control.
It took around 2 stressful days, going back and forth between almost uploading it, correcting it in post (in Shotcut), and re-rendering it in Blender; each section roughly took an hour or so to render with next to nothing settings. Thus any small adjustment, missed keyframes that made the work look amateurish (missing something whilst animating that is), took exponentially more time to fix than one would think.
Turned out the core of the problem was that some of the control points were incorrectly set up, which created a circle dependency for some (who would’ve thought). It wasn’t easy to find the root of the problem though, as have been using IK for more than its intended purpose, mixed with constraints and adjusted transformations, etc. But at the last moment, when all hope was lost, the solution was found, and was lucky enough that all 4350 frames (for the NPC) were salvageable and made into this video. And as a bonus, at one point my PC locked up with an error and wouldn't boot it right away.
[Side note: There was this paragraph of venting about how none of the animations above caught the attention of anyone (most of them only a few views), speaking of dev/animator circles. Which would’ve looked good on my “resume”.]
4. Keeping the gate shut (doing business)
As someone who has yet to make it (in any shape or form), the harsh and cold realities of the industry cannot be circumvented. A few years ago had to learn this the hard way, when my goal was to simply join any existing studio to the best of my abilities. As that attempt failed, the last option of going indie remained. Unfortunately, back then, being a nobody without connections, meant the end of some of my projects and goals in life.
Not everything or everyone is perfect, however not knowing the essentials shouldn't be used as a valid excuse for failure (well, generally not). Won’t go into this (the rigidity of the system, and how it’s skewed towards fail-safe investments), because creating a commercially viable product is an entire beast on its own, heavily dependant on a lot of things, has its own rules, which can and should be broken, and require a whole lot of know-how to pull off successfully. That being said, being in the situation this project was, nudged me to re-evaluate my approach to this production (granted the wish to ship the product is still intact).
A quick refresher: My last commercial project (the one with rockets and asteroids, simulating sort of an RTS) was canceled right before release, as the drastic changes around that time created a vacuum which only could’ve been saved by investors. The scale of the devastation was so large that it took almost a year to digest everything that came crumbling down from the aftermath; not just concerns with health but relationships and finances for the loss of time and effort it took to get there (~14 months down the drain). A project that was meant to put my name on the table (simply by releasing a commercial product, regardless of perception), would have moved things forward one way or another. Because, to this day you can only get a job in the industry if you’ve shipped a title, if the position isn’t junior that is (of which there’s very little). But as none of it happened, was left in the dust and in a much greater pickle; and by pickle you can imagine the greatest pile you can think of.
This was a while ago. And as you can imagine, nothing has changed since. Which means that all the aging tools are the same, and now have to face an even grimmer outlook and shame of wanting to make something out of nothing. And as there’s no telling how far the production can proceed with the current situation, literally on its last legs in terms of technical equipment from the Win7 era, it has become increasingly pressing to find a solution for. That is why the hope was to snoop around to see if anything has changed in the last 2 years; spoiler alert, nothing did.
Not sure why, but finding information is a royal pain in the rear. Information that should be public, like telling everyone how to reach a publisher via email (to a generic contact to ask about), or know what genres, what requirements some have (like supported platforms, team size, target audience, aesthetic, genre), and so forth, you know how the big-boy business do in real life, to educate people what their bar is for entry is, to successfully submit a pitch to them. However, most of it isn’t public, and you’ve to scour the web to find tidbits of information in pockets like a hidden forum thread, or like finding a random table consisting of several publishers, assembled by someone who knows just enough to fill in some of the missing gaps. Because you’re out of luck if you wish to reach out, to know more and to communicate with others (speaking of business emails), as nobody cares to speak with outsiders from the club.
For one, have known that solo developers are frowned upon, but still thought to give it another chance, with the intention of knowing a lot more, before sending a pitch to anyone; as having heard tales of accepted solo devs was still in the back of my mind (there’s also one GDC talk about this, where an investor mentions solo devs). The thinking was that by understanding the requirements, you know like knowing how to compete in the race, would’ve saved me and them the time of not having to go through my application if it wasn’t up to standards or met their portfolio. Because, reality is that if you’ve a horror movie that you wish to make, you wouldn’t necessarily advertise it to a studio that specializes in romance; makes sense right? (thought so too).
It all started around last November, when after many years of declined submissions (small and big, sensible and crazy), hoped to finally figure out what the exact requirements for the Epic MegaGrant were (as working with UE4, it was a no brainer). Trouble was that there were no contacts listed on their site, only for their supportive community. So gave it a shot, and reached out to them, to learn more. Because, and cannot stress this more enough, their website boasts the following “We also have a soft spot for small teams and solo developers, so if you need a hand, get in touch.”. This is important when technically nobody does this in the entire world. So for people, broken beyond belief, such a golden carrot cannot be passed without giving it a try; as such opportunities only come once in a lifetime. Failing this one and “only” one chance can feel like the end of times (have seen it many times from other hopeless devs as well); which is, in some ways, a valid concern to have. That’s why knowing how to compete has such a value to it.
Which is why it’s so baffling to find out that there’s nothing about this online. And as you cannot get any feedback on your applications (once they get rejected), you are left in the dark. Or try to figure it out by the long-lost tales of other devs. Because the truth is that if you try to reach Epic, they won’t answer your inquiry, as mine was sent 4 months ago. A simple letter asking for some info… So when you see a random post about a failed submission, you always look around to see what others might have to say.
That’s when someone accidentally spilled the beans, for another person to ease their pain, that they happen to know a source (allegedly working on the team accepting/ruling of pitches) that told them that all this grant is looking for are projects that A) Pushing the limits of the engine and B) Give back to the community and/or people could learn from those (hold educational value that is). Which felt odd (at no point they ask about this under their pitch submission), seeing that most of the “stories” (previously accepted applicants) listed on the site are simply commercial games (from a quick glance that is, as they supported 3rd party software etc. as well before, to my knowledge). Not educational, nor giving anything back to the community these were, just “simple” games to entertain: A sample game that was on the page was about a cozy game made by a couple about cute cats in some farming/outdoor setting. To my knowledge, all this (and other samples) proved that the bar of entry was drawn at gorgeous aesthetics only, with usually a sizable team (as in having separate people doing different roles, tiny to small team size). The example above is a whole other thing on its own, as it raises questions about their practice (if the second hand account is true), as why on earth would anyone pretend to be in the position of a large, well known company when hoping to submit a project to them (and essentially doing the work they “supposed” to do, by being caritative on their own), instead of trying to come up with something on their own, which they did by pledging their support for upcoming indie devs; which in itself qualifies for “giving back to the community” (knowing the state of the industry; see the layoffs as an example). Very confusing, and the facts don’t line up (as to what they claim for entry to be).
By having a grant they’re already doing way more than what any other member of the industry does. Which puts them in a special position (hence they got overwhelmed when the program launched). That being said, it’s in their right to do whatever they wish to, agreeing to whatever standards they’re thriving for, for whomever. That being said, cannot understand the nature of wanting to keep their requirements top secret (with the rest of the industry). What can they possibly gain from it? Beast me. This is all very exhausting…
So anyway, didn’t get too bogged down as the weeks passed (we’re still in November), and fired up a bunch of publishers website the coming weeks, and started to ask around; of course, only those who were “brave” enough to share a generic contact, and looked more prone to answer were contacted (e.g. working in similar genres, team sizes, etc.); again to minimize the incoming traffic for them (and to not bother dead-on-arrivals), assuming they get high volumes each day.
Well, what do you know, in 2024 asking questions is still met with silence. Well, actually, there were two instances (out of 15) where it got somewhere. One was that by sheer luck and tenacity (after some detective journalism), managed to get a direct contact email from an investment fund (with name and everything). That did not work at all. A direct contact (internal email). The second one was when someone, a business associate (English wasn't their first language) took pity on me whilst misreading my inquiry (they thought I was sending a pitch, just because there was a link to a video, the one with the walking giant, to showcase that the ability to make decent art is there for me; knowing how most of the solo dev’s art is lacking and can be frown upon), and “encouraged” me to try again when the game is more refined. It was basically a leave-us-alone letter. Naturally, rushed back to correct the mistake and briefly told them about this game that’s currently in the works. That didn’t work either. At this point, Why would people ghost others, when you’re already in a business conversation with them, you’d ask. This is not how you should act, especially knowing that business is at stake. In my opinion, correspondence should not be held like this. But then again, I’m just a nobody; what do I know? Even pity couldn’t help it seems. [Note: This rant went on a lot longer, about this indecency and others, but thought to spare you from the rest.]
[Note no.2: The other worry was that traditionally, pitches are accompanied by a strong vertical slice. Something you cannot get around, no matter what. But this game is nowhere near feature complete, only indicative of the final product. Which may or may not be a huge red flag. Depending on who you ask, in what situation. Hence, it was also mentioned in those inquiries.]
Finding simple answers, simple business answers to “Do you work with solo devs?”, or “What are your expectations in terms of visuals, execution, genre, requirements, etc.?”, or “Are you willing to take a look at a WIP build?” (no link was given to any of these, just for the record, only for that one damn video at the end), etc. are still such a taboo questions to ask (finding out the prerequisites) that this utter idiotic secrecy makes no sense to me (it's the good ol’ gatekeeping at play). And people wonder why things are the way they are.
Well, regardless, will send this project to everyone in hopes that someone, somewhere will take a moment to laugh at it. This is a solo business production, already 8 months in, where a person can do only so much. Would love to make something that looked AAA, not alone, but also don't have the luxury to spend the next 50 years doing so. The fact that the project got this far, this fast, was due to making difficult compromises, having a lot of crunch experience and personal drive, and finding the balance between scope and viability. The product pales in comparison to those who make them, as a sub-par product is always better than no product at all.
5. Another loading screen
Soon after completing the “mood board” (for the main NPC, consisting of a dozen or so emotions, only a few are displayed in game at the moment), an unexpected challenge arrived in the form of having to design another loading screen for the in-between turns. It was surprisingly challenging, as there was no creativity and energy left inside at that point: Whilst wanting to do something different and not just a static image (like for the one used elsewhere, where you can only see the logo).
In a “small-to-medium” sized game like this, repetition could be still picked up easily (especially if replayability is one of the selling points), solely because there’s only so much to look at. And having to see recurring bits (e.g. animations, models, similar scenes), especially over a long period of time can feel cheap and jarring. Which meant that this was one of the many times where you had to think outside of the box, in order to achieve what you were looking for: Each end-of-turn state is handling a chain of events (as AI has their own routine), and the game has to wait before all states are saved and completed (in the final version that is), which somehow needed to be visually represented as well as being entertaining and informative enough for the player to “justify” staring at a static screen for several seconds if so (for the logic to end that is). It’s worth to note that you have to have something to show “progress” of the logic with, otherwise the user will not know if the game is still running or just simply crashed.
The passing of time/day really fit into this, but immediately ran into issues with it. One idea was to just show the “overworld” (the courtyard) and have the Sun do it’s rounds, but at this stage it wouldn’t have look palatable (there’s still some light leakage on the Great hall, which needs to be fixed at some point in the future with the complete overhaul of the mesh, scene and foliage, by dismantling the model, etc., but that will only happen if the project is brought into UE5), nor would have been “original” or wanted to fiddle with it to look right (as rotating the Sun would have been in increments, as well as modifications to the background, etc.).
The other option was to use some kind of device to measure the completion of the process (think of going from 0 to 1, like a bar filling up or a clock going from 9 to 10), but that is already part of the UI (well supposed to be, not implemented yet) on the main top-bar (to show the passage of hours and alert the user how much longer they can speak to others, there’s a whole mechanic to this), so using a clock or any similar devices was thrown out. Then came the idea of using paper cutouts for a semi-3D scene, where the Sun-Moon-Immortal (the NPC) would revolve around (literally); the scene was made but the test failed as it looked horrible (mimicking paper cutouts didn’t go as planned).
Another idea was to make a bedroom scene for each tier (as there are 3 different levels planned for the game, from a small longhouse to a castle), and perhaps add a door or candles to show the passage of time (which then could be used as an indicator of some sorts). However, after making the first bed it looked like a child’s crib (even though it was based on historical evidence); also wasn’t too keen on furbishing another scene at this point (that would’ve taken me a week or so), because of the crunch.
Then there was the concept of using doors, just doors to represent the loading screen, like in many other games before (to open and close). That was canned too. The only reasonable thing that stuck was candles: But in what context? Having a bunch laying around, like in a church scene, would’ve made it difficult to see “progress of ending the turn” (would’ve been quite the cinematic, but problematic to light); especially if the candles vary in size and shape and are afar from the camera, which would’ve made animating/setting things up that more difficult and time consuming.
A bunch of going back and forth later, the decision was made to stick with just one candlestick, with a tiny scene (has to be one because of the camera angles, otherwise the scene would’ve looked empty), which was also not an easy thing to come up with (not just by being creative but to limit the amount of work, to achieve that “goldilock zone” between time, effort and outcome). Was reluctant to go with this approach, knowing that it would look cheap to just look at one measly candle: It had to be something more… something (more) spectacular preferably.
The final scene in game
Came across a design that involved mythical animals, which was supposed to be in fashion in the 12-13th century. Using that as an inspiration, the idea then slowly evolved into this scene with the bear and the dragon. Originally, the bear was supposed to be something else, fighting either a human or another animal much like some of the real relics do (to keep it more grounded, and functional as a candlestick), but the burnout took the best of me and went for the cheapest route: recycling.
You see, there was a shaving grace in all of this. For one, the inability to build an audience around the game, for reasons like not having any real gameplay to show or being listed on Steam, created the much dreaded notion of “maybe the game is not worth making after all” which has plagued many of my projects (and many other devs can relate to). It’s both valid and not to have second thoughts about something you hope to make, but only receive negligence, as business comes first in this setting.
Have been wanting to create a community for the longest, as when you’ve the right amount of followers all the closed doors will then open. Hence experimented with a lot of things over the years (like making shorts, animations, etc.), but none of it worked: Creating content, meaningful content requires a lot of elbow grease, on top of knowing how to reach your target audience. A big part of making games is really boring, and is not interesting for the average customer, because all they are interested about is the finished product (rightfully so).
This is why the questionable idea of making a “tiny” free game to make some noise and somehow get the project out there came to be (as a last, crazy resort); because if you’ve no budget then the only thing that can propel you into fame is going viral. However that’s easier said than done, and you cannot predict with 100% certainty what will work and what won’t; it’s just another way to gamble. Of course, by making a quickie free game, the issue would come with the fact that the target audience would be entirely different (both age and interest, as it would’ve been a different genre), the production still would’ve needed a lot of time to make something useful and playable (speaking of several months to get to a minimal viable product), and in the odd chance it would’ve worked, conversion rate from free to premium (in another genre) would’ve been low or insignificant. Not mentioning the fact that it would’ve stalled the main project (creating another unfinished product in the raster), just to jump ship into another one for the sake of “hoping” it’ll work out; red flags all over. Had my doubts about it working this time around (from experience and giving it some thought) and chose to push this update instead; despite struggling internally.
That being said, before stopping, have came up with a concept and quickly drew up a dwarf, and a chubby dragon later on two legs (there was this whole idea of digging and fighting in the mines). It was sloppy as hell, so please excuse the poor quality.
Fast forward to now: Chopped up this half finished asset, doubled its legs, modified its body and wings and turned it into a dragon that you saw on the nightstand above. No fiddling with having to come up with a new creature design, not needing to think of a problem for once, because it was just there for the taking, felt both liberating and a crime.
6. The (re)make of a jukebox
Handling music and certain SFX wasn’t implemented well: It relied on 3 components that broke at random, because swapping music with the existing logic created unwanted loops that could not be cleared (as those were on separate bound events which would all fire roughly at the same time). Which would’ve made the experience that much worse if not tackled. So the old jumbled system was taken out, and modified to a point where now transitions do work (the music doesn’t stop and continues from its last position), and “self-corrects” whenever an event occurs; it’s now modular too. The latter part was a bit tricky to do, as unreal 4.27 doesn’t differentiate if an audio component stops on its own (like reaching the end of a track), or stops by manual interference (like being overwritten, or by stopped by a node); thus a small separate logic had to handle and checks if an event that was fired was valid or not in any given case.
7. Lighting, lighting, lighting
Have mentioned the issue with leaking light. But there’s also a greater one with having low FPS (which can be experienced in the video). It’s partially due to the age of this workstation, as it cannot handle multiple dynamic lights at the same time; having 2 or more overlapping causes major performance issues. Unfortunately it’s the staple of the game, as it makes it alive, so cannot be circumvented. The image shown below is how it looks now, but before the complexity went into white, which is the indicator of extreme-high performance hit.
Using tricks such as changing the light channels (of which UE4 only has 3, which all were used at that point), limiting the radius of the lights, and so forth, didn’t help much, as the Great Hall (GH) has to be lit somehow and cannot just use one light for everything (from multiple angles as well); the scene is just way to complex for that.
In the end, decided to cut one of the main lights in the GH, and tried to limit the reach of the lights as much as possible. The scene cannot reach a stable 20 FPS at the moment on this machine (which is an issue).
Light complexity as it stands now in the main scene
8. A bit of headache
The update was postponed an extra 3 days (on top of a 3 week delay, due to issues with coming up and implementing all the systems that used the assets) as there were some unforeseen issues: One was that by having a 3D UI and doing everything in camera meant that some adjustments were required in order to experience the game without clipping (for the different dialogue scenes where the camera is up close to a subject). This small task turned out to be a massive headache, which was sort of fixed but not.
The idea was simple: turning a 3D object into 2D by flattening it to a plane. Turned out that working with vectors is not as straightforward as you’d think, and what would work in principle, doesn’t necessarily bode well in practice. Having known next to nothing about technical art (partially because of not being a programmer) gave me half results; had to look into the math behind such a projection (with vectors). It sort of worked but didn’t, as the applied shader was rotated and skewed (because it was applied to a skinned object).
This forced my hands to try to reach out for some help, and possibly fix the shader, because time was running out. This was a first in years… Was lucky enough that one person looked at the problem and tried to help. Took us a few days to sort of figure why it wasn't working (like having to re-import the entire rig and animation system, as it was thought the incorrect rotation of the rest pose was at fault, it wasn’t, but hey that’s now fixed), as finding the reference plane (to calculate the projection from) introduced a lot of side-effects (like only working on a global axis). The much needed change came when it was suggested to translate the base from global to local coordinates (which was something that was a suspect for me, but had no idea how to do), using “transform position” instead of transform (vector) in the material (bit confusing those nodes are). Cannot tell how relieved this made me, as for some reason this didn’t occur in any stage of the production that one day the camera might have issues with clipping; in a game where dialogue (and close camera angles) are prevalent.
But the story didn’t end here. In fact it just got more convoluted from that point on. “Suddenly”, it became clear that using a lot of text with a font that isn’t optimized for reading (and just slammed together) isn’t going to cut it; this was somewhat solved by reducing the amount of text, but a major overhaul is on the table. This was a huge blow for a text heavy game.
Then there was the problem of fighting with the rendering and post-processing (PP) materials: The bloom and 3D widget shadows made the text unreadable. It appeared fine on short lengths (like on buttons that had large font size), but not in bulk (it became fuzzy as the incorrect formatting of the text, combined with the use of unoptimized outlines (generated by the engine) created a mess of blobs). Some panicking later, the solution was found by altering some of the settings both in the render (on an object level and the font), and in the PP materials. So at least the text now didn’t glow, and was easier to read. So it was time to hit that build button and record some footage. Right?
Not quite! It took 4 different attempts, and over a half a day, because suddenly things that worked before broke (like the dialogue box), or some logic that wes missing that would’ve become noticeable when recording (like the abruption of music, or not indicating clicking, or missing camera locations, etc.). In true solo fashion, all was tidied up in no time. And by the end of the day, that glorious 2 minutes of “playtime” (that took 4 months to do) was finally complete and uploaded to Itch and Youtube.
Obviously, the to-do list just grew a bit, not just because the need for fixing bugs, bu as a result that the bulk of the dialogue system was created on the fly, so everything needed real-time adjustments or more work to make somewhat operational, which will need corrections afterwards (like adding a transition point for the camera when flipping the view 180; as there’s an instance where the characters face the other direction causing confusion in the viewer, it’s a big no-no in film production, if you don’t know how to utilize camera movements and how to bend said rules).
9. Closing thoughts
Honestly, have no idea what’s going to happen next, as a much needed change is unlikely to happen on its own. Trying and exhausting options didn’t help thus far, nor will in the future. However, as said before, will take some time off production, and cobble together a pitch deck in the false hope that someone will read it in the coming weeks. That is the thin hope that now this venture rests upon.
Thank you for taking your time to read this journey from start to finish. Take care.