Goal of this project:
The goal of this project was to build a little cozy scene which I pictured in my mind. From the beginning I didn't want the scene to become too big, but as I continued on this project, I constantly wanted to add more. Sometime down the line, I decided to reworked my goal as the whole scene got bigger. With a bigger scene, optimization is key.
I took a lot of inspiration as I hiked one summer in the tatra-mountains. In the nature of that area, there is a certain feeling which I tried to replicate. The narrow path along the mountain side, the forests, the views.
My approach has been to generate masks and packing those into a texture in Substance Designer. I then fed that texture into Unreal Engine 4 and set up a material to both warp and pan the texture on a plane that covers the entire sky. That plane has a slight curve to look better near the horizon.
My original goal was just the cabin, so that became the number one thing to do on the list. Here you can see the cabin assembled and the parts I made to be able to build it.
The limitations however would be performance. Because of this effect being a texture and covering the whole sky, I needed at least a 2048 x 2048 texture to get rid of the jagginess the pixels would produce. On top of that, I needed at least 1024 layers in my POM to get decent looking results. In my presentation I have 2048 layers. Therefore, I would not recommend using this effect in a project where a lot of other thing are going to need performance.
I have a pretty solid workstation and with that, I have an average of 100 FPS in a mostly empty project.
The Bug Hunt:
When writing the code for our own engine, it became apparent that something was really wrong. I looked into my code over and over and even started to change it fundamentally with the help of my collegues, but it didn't work. A lot of time was spent on this bug hunt since this was supposed to be quite a big piece of our game, but in the end we decided to cut in once we found out what was wrong. It turned out that the matrices used in our engine was built incorrectly and we could therefore not access the right data. To fix those matrices wouldn't be the issue, to adjust all the existing code would be since at this point, we didn't have much time left. To the left you can see the work in progress state inside of our own engine.
For presentational purposes, I generated a quick terrain with World Machine and used a free assetpack from the unreal marketplace to set up a scene. I then picked a few angles and placed out a couple of cameras which I rendered out into frames. Stitching those frames together, I created the videoclip on the top of this page. Now all that was needed was a fitting tune, so I composed a piece over an evening and did some equalization in FL Studio.
When doing complex work such as this one, I need to communicate better with the team. Very much of my time was spent on research that I didn't really think of what our engine was capable of. If I'd talk to my programmers earlier about this, we would most likely gotten this effect into our project.