April 12, 2014
Exil Dev-Blog 9 : Going to the Unreal Engine 4
A bit of time passed since my last dev-blog post (I feel like I’m coming back from the graveyard, my last dev-blog was one year ago). It’s not that I didn’t wanted to give more updates, unfortunately my school became very overwhelming, same case for some other projects. I still kept working on Exil here and there, but often not very focused. Most of the time it was for minor features. Those following me on Twitter had the chance to see them.
Unreal Engine 4
During the last summer I have been contacted by Epic Games to participate in the beta of the Unreal Engine 4. I took this occasion to move Exil ahead. I decided to jump because the new version of the engine what giving me much more power and possibilities. Especially regarding some complex gameplay features I have planned (like the colossus climbing system).
It was not easy as some things changed since the Unreal Engine 3. I had first to acclimate myself to the new interface and the new kismet system. It’s much more than Kismet however, so the comparison is not fair. Fortunately the art content followed the same process as before (meshes, textures and materials). So I was able to quickly re-import some content from the UDK version and test with that.
One major change however in the C++ access, which during the beta was not as easy and awesome as it is now. We had almost no tutorials/documentation on the subject and we were limited to the header files only. So the major changes regarding the gameplay system was very hard for me to manage. I had to program some features while being totally blind. I’m not a good programmer so it took me some time (especially since my C++ was a bit rusty, I didn’t used this language for 4 years). Of course, I was not totally blind as the developers at Epic were very kind to answers a lot of my questions. (Even if I still wanted to learn by myself certain things.)
Now that the engine is out officially with the full source code, I made some progress much more faster. I’m already designing some new things. So I will talk about gameplay in a near future.
I tried to continue to build an environment. However I didn’t go very far, I was just building some blocks and trying to light things a bit. It was a good exercise, but since I didn’t found it very appealing I stopped it without going much further.
It took me a bit of time to figure out the new lighting behavior of the Unreal Engine 4. Since materials behave differently and I believe it’s also the case for lights, it wasn’t easy at first glance to reproduce some results that I had under the UDK.
Since I decided to switch to UE4, I wanted to do a new pass on Lena. Mostly to make her more PBR ready. My new focus was also to make here more realistic. Of course Lena is still stylized if you compare to a true human. It’s mostly my fault as I’m unable to reach the level of quality that current AAA games can provide. So my current limitation is my own capability in 3D sculpting. I still spent a bit of time tweaking the face of Lena, reworking here lips and her nose mostly.
I didn’t spent my time only on her body. I also wanted to give a proper design, something much more appealing. The design I made during the UDK version was very rough and wasn’t matching the mood I planned for the game. Also her clothes weren’t appropriate for climbing here and there. The new goal was to design clothes that fit here more closely. Since I planned her to run on wall and climb over ledges, I didn’t wanted to have clothes that could snag on things like in real-life.
You can see below that I have imported the UDK version into the UE4 to give a comparison. As you can see above, PBR require much more clean textures, the old method for producing art doesn’t work very well. Lena looks very contrasted and she doesn’t react well to the lighting. I also started to try the new shading model, especially the sub-surface scattering to give realistic skin. You can also see my attempt to produce some hair, which unfortunately failed. One day I will retry properly.
Unfortunately, this new version wasn’t working. My friends were the first to point out how wrong her new clothes were. I figured out they were too "modern", too clean. They were missing patterns and details. So I went back to the design process and took my time to figure out something that very good (at least for me). This took easily two month to finally find and decide a design that was interesting.
When I finished this concept, I started an internship, so my free time totally broke. It took me 3 months to have an in-game version. Some parts from the concept are still missing. Since I was doing my internship at Allegorithmic (it was really awesome), I took the opportunity to work on my character via Substance Designer.
If you don’t know what Substance Designer is, it’s a software to create textures from procedurally generated content. I didn’t know very well the tool at first, but my internship gave me the opportunity to learn directly from the source. I had a great time and I fall in love with this software. I never opened photoshop again since to make textures. Just below is an example of what you can achieve. Note that my planks are totally from procedural noises and other filters, I didn’t use a single bitmap.
So Lena became a benchmark to test and discover the software. This was also the good time to learn how to produce PBR textures since Designer was supporting this workflow. Marmoset Toolbag 2 came out also at the same moment. So having Designer, Toolbag 2 and the Unreal Engine 4 under my hands was the perfect time to try PBR rendering. 🙂
I don’t show the final textures for the moment as I rework them a lot (thanks to Designer, this is easy to do). I will also split them to pass some settings (like color) in UE4 instead of doing it directly inside the texture itself. Importing Lena in UE4 was also the opportunity to re-work my rigging. Since for my school project I had to create an auto-rigger system, I made it compatible with my UE4 project. This was the opportunity to try some littles things like Lena blinking her eyes. For this, I created some functions in C++ that I was able to call in Blueprint. I simply generated a random function that would send me a float, this float variable will then control the blend between two states : open and close. And voilà, I had her eyes blinking, with a bonus (see the gif below).
I pushed this further later with more controls, like the possibility to decide where the eyes need to look. For the moment I can only control this in Maya, but I plan to add it in UE4. So Lena could look at random things more naturally. I also had the chance to have some funny bugs. Since the animation system changed a bit in UE4, the animations need now to be updated too if you change the skeleton. In my case I didn’t do that so my idle animation made the little bug above (because I added the eye bones after). Recently I was also working on the pupils and what is around. I started to work on a system to fake the shadow on the eyes. I managed to get something working and also animated, but it wasn’t very clean. For the moment I use interpenetrating planes with a gradient.
I have also an other character in mind. I will keep it a bit secret for now. You can see below an early concept (it changed a lot since). That’s all for now, I hope I will be able to show a bit of gameplay in the next dev-blog. 🙂