I look back on the last 10 years (yes, it has been a FREAKING DECADE since the release of OoH 2009, can you believe that?!) I just think about all the time that I squandered, all that time just…fumbling around in the dark, so to speak. How in the hell did I let it all slip away?
It was last year when I kind of hit rock bottom. It was just about life in general, my own personal development and the state of the project. There were times when I’d find a quiet place outside, sit on a bench with a cup of black coffee and just contemplate about my direction. There hasn’t really been a time in my life where anything has gone completely smoothly. Why do things have to be so difficult sometimes? Why couldn’t life just be straightforward?
When it came to this project there were always stumbling blocks. Whether it was the Engine itself or the Apps I use, there were always issues and limitations that I had to figure a way around. Any time I made a small advancement, there would just be something that would set me back 5 steps. Constant annoyances and frustrations sap away energy that should be put into creating. I really, really don’t know how I’ve been able to overcome these problems (I’m stubborn I guess and a little on the batshit-crazy side) but I’ve somehow been able to do it.
2019 so far has been the year of breakthroughs for me, both on a personal level and with this game. I just got tired of coasting through life like a lazy idiot and finally got my shit together. I stopped procrastinating because that is how 10 goddamn years passes by and it just feels like 2.
I reached several personal goals (I won’t go into them but they were very important) and took care of some health-related things I kept putting off. I made effort, I mean real effort, moving this game forward. You would be astonished if I were to show you exactly what it was I was doing behind the scenes for the last 5 months with this game. I crunched a lot of stuff in a relatively short amount of time. I managed to keep researching new methods of doing things in the Engine and even learned a few new programs pretty quickly. Sometimes I don’t know how I’m able to absorb all of this shit without going completely mad.
Interestingly, as if the Universe itself were giving me a nod to continue onward, out of the blue I recieved emails from several different contacts that I hadn’t spoken to in 5-7 years! Not only that but also a recent flow of emails from fans all wishing me well, telling me how inspiring OoH 2009 was to them and to keep going forward. I seriously don’t know why you guys have stuck by me for this long but thank you.
I want to tell you about possibly the largest advancement ever made for this project. It is literally a game-changer. I managed to put together a fully dynamic lighting system and it runs smooth and looks good! Well, system is perhaps a bit misleading because there isn’t a drag and drop solution to the way the lighting is set up. There’s just a ton of fuckery going on here so let’s just say I came up with some methods to do this. Now, none of it is physically correct but hey, it works and it looks fine to me!
Ages ago I fiddled around with UE4’s LPV system but that’s been officially abandoned for some time and there hasn’t been advancement on the Dynamic Global Illumination front. I needed to have a fully dynamic lighting system for this to be the game that I wanted. When I couldn’t do this, I settled for Static Lighting and used workarounds to somewhat achieve the gameplay mechanics that I needed. This was all well and good but the problem with Static Lighting was the ridiculous render times it took on a large level. It takes time for the Editor to calculate all that gorgeous GI and bounced lighting but it got to the point where I just got sick and tired of waiting and I couldn’t work with it anymore. I decided I had to find another way around or not continue on at all. I was at that point.
Typically, I would build the map and set up lighting without rendering it (in essence, working blind) and in the morning before I left for work, I would render out the map. For the GPD Level, this process took nearly 4 hours! You can see why it takes me so long to do things. Any time I lit a new area of the map, I could only imagine what it would look like and if I wanted to see exactly what it looked like, I would have to wait 4 hours. It really sucked when the lighting didn’t look the way I thought it would have, so I’d have to make changes and then it would take me another 4 hours to see the result. Sometimes, I would come home to discover that the Editor crashed at the 92% mark and I’d have to do it all again. FUN! If there was a way for the Engine to ignore any data that hadn’t been changed and only render out any part of the Lightmap that was altered, that would speed up the process! But I’m not a programmer so I don’t know what that would entail.
Another problem was the Lightmap filesize. I essentially rendered each map 4 times to cover a morning, afternoon, evening and night phase. 4 iterations of a single map at over 700mb a piece?! Ridiculous.
OOH-GPD1 is the Dynamic light version. NEWFOG is the the Static Light version. Look at the differences in the .uasset filesize.
Now with the Dynamic Light workflow, I lose the precalculated GI but am able to fake some of it to acceptable levels. Everything I see is in real-time, no more waiting 4 hours to see the results of any changes.
You may be worried that because all the lighting is dynamic that the game would run poorly (Dynamic shadows are very costly) but I’ve done what I could to counter that. Almost all meshes in the game have multiple LOD‘s, I’ve set up Cull Volumes everywhere, Shadow-casting lights have cull distances, I’ve tried to limit the overdraw and my Materials are relatively inexpensive.
Lots of Speedtree assets and grass naturally swaying and reacting to the wind yet still running at good framerates!
I just love how organic Speedtree assets look!
It also took me some time to find the sweet spot for shadow quality but I think I got it. Initially the shadows looked even better but then I started getting these random Grey Screen Of Death crashes multiple times in an hour (tried the latest Drivers and even rolled back Drivers to no avail)
I had to set up autobackups to occur every 4 minutes because it was so bad. I finally narrowed it down to the lighting and shadow quality putting a strain on the GPU, made the necessary changes and haven’t had a crash since.
You’ll be seeing a lot of these guys…in one form or another. 😉
When I first built the Day/Night cycle I was using Sequencer because Matinee was deprecated at this point. Despite the recommendation to use the advanced Sequencer compared to Matinee, I found myself having a tough time with it and found it very unintuitive! There are some quirks that really make me scratch my head as to why they chose to do things a certain way (But then again, that’s with every program I use) Since I already knew how to use Matinee because it was in the UDK, I got it up and running very quickly using just my knowledge from the UDK days.
Timeline in Matinee. It’s streamlined.
Exact same Timeline converted to Sequencer. Ugh.
Im hoping (the word here is HOPING) to have a playable demo for some close friends in a couple months time to see if they like the direction I’m taking Out Of Hell.
Thanks for stopping by and now I’ve got to spend the next few hours backing up all my work!