Thank you so much for this. i am really happy i can play pt. i hope you can do updates with more details like cockroaches and the ending :)
The Development of Unreal PT
NOTE: This is a more technical overview of some of the aspects and challenges I encountered during development. As well as some stuff that wasn't able to make it into the final release towards the end of the post. Head over here for a more general overview of my whole development journey and what what it means for me.
Reused Assets from the Original Game
Although I did set out to make all the assets from scratch, I felt it would have taken away from the authenticity of the whole experience if I recreated some of the more iconic ones: Lisa's, Norman's, and the baby's models, the baby's animations, the radio, and the pictures in the picture frames. In addition to this I also had to reuse the original sounds because I don't know much about audio creation myself.
Models and Textures
Like I mentioned in the main devlog, the main point of this project was just to expand my knowledge of modeling and texturing and gain some experience doing so. Initially I started off only using Substance Designer, and tiling those textures across the models I made in Blender, and baking out high poly normal maps within blender. About halfway through development though, I realized the technique didn't quite look that good by itself, and it would have been extremely difficult to make the smaller props using this approach. The main reason I stuck with this approach for so long is because I had tried Substance Painter before and the layout was different from Designer, which made me scared of using it for a while. I eventually realized I would have to learn Painter eventually so I dove into it by trying to make the old banana found on second desk. Problem is, all of the smaller props in the original PT were photoscanned, so that made creating something that looked similar a real pain. It took a few iterations but after a few days of learning the ropes, I was able to come up with something I felt looked relatively close to a photoscanned banana. From this point on I drifted from Designer more toward Painter as I realized I could make good-looking results, though I still did have to use Designer for some more complex base materials that would have been harder to recreate in Painter. I stuck to this approach of baking and texturing mostly in Painter for the rest of development, with a few exceptions. For example, the door textures needed to be an extremely high resolution since the player's camera gets right up to them, and a 4K resolution material takes up ~40MB of VRAM total, so for those types of objects I ended up baking detail maps and used those to mask out 1K resolution materials over the entire model:
This type of material was only needed for a few objects, mostly the doors and cabinets. Most other objects and props use traditional, non-procedural textures.
I spent a good 1-2 months solely on lighting the hallway properly to get the right atmosphere going. About 3 or so weeks were spent on all the lights placed throughout the hallway. This process wasn't too bad, it was just a matter of figuring out to use a second point light to add fill lighting since I wasn't able to bake any of the lighting due to the nature of the hallway. The harder part was making the flashlight look right. I noticed it didn't look convincing enough and going back to the original game noticed they had some type of dynamic bounce lighting/local global illumination. Unlike Unity, Unreal doesn't have any decent dynamic global illumination, so I spent a good few weeks experimenting with different types of solutions. Initially I was using a point light with no shadows placed where a line trace straight in front of the flashlight hit. This solution looked decent and I stuck with it for some time, but it didn't properly scatter out in all directions like light naturally does and it was easy to see the point light moving around when the flashlight moved. So I came up with a different system that cast out 12 traces from the flashlight and placed a spot light where each trace hit some geometry. This effect worked well, but the problem was that it completely broke on more complex geometry and it took a hefty hit on performance. In the end I made a custom shader inspired by INSIDE's fake global illumination discussed here, and various dev-talk on The Last of Us' and Uncharted 4's lighting and technology that I was able to find. This is what the end result looks like in-game:
Sound and Audio
There's not much to mention here, I'm not really a sound/audio person, although I did have some fun with a few "filters" and systems I made to modify some of the sounds in game. My favorite one is this one that fakes sound bounce from the radio to make it sound like the broadcast sounds are bouncing down the hallway rather than being able to hear them through walls.
This section just goes over a small handful of different effects I worked on for the game, in no particular order.
Fresnel Roughness - The Fox engine implemented an effect where surfaces get less rough at an angle. Although it's not as exaggerated as the Fox engine's implementation, I created the same effect and applied it to most of the materials in game. It's subtle, but you can see in this screenshot how the roughness buffer gets darker (more smooth) as the angle between the geometry normals and the camera gets steeper:
Shadow Decals - Unreal Engine 4 has a system implemented that allows for realistic shadow smoothing (or edge hardening), but that didn't have enough control as I would have liked. I decided to implement a more manual version of this which gave me more control of how soft shadows look. All it is is a black colored decal with a roughness of 1 masked out by alpha masks I made in Designer:
I attached these decals to almost every stationary light, and they added nice shading that I otherwise wouldn't have been able to get, even by baking the lighting.
Window Shatter - This effect was relatively easy to make by itself, however it took me around 10 hours of work due to different issues with blender. Essentially all I did was fracture the window, combine the shards connected to to the frame so they didn't all fall off, and simulated the window falling in a model of the hallway to keep the pieces from sliding through walls. All this for an effect that's too quick and too dark for most people to even see.
Originally I planned to remake the entire game, including the final cutscene, from scratch, in real-time. I was able to complete everything gameplay-wise, and got some work done on the final cutscene, but towards the end I realized I wouldn't have the time to model the rest of the street, add in the proper particle effects, match the camera animation, audio, and animations together, and perfect the lighting all in a reasonable time-frame, and unfortunately decided to cut it. This short clip is all I was able to make:
What I learned about VR while making this project is that it's an extremely bad idea and very difficult to do when you don't have an actual headset yourself. Towards the end of development a very nice fella who goes by Tmcraig008 offered to help me and test it for me. The process was very difficult as our schedules and timezones did not match up very well and I had to be constantly fixing bugs and rebuilding/uploading new builds for him to test, but he is the reason the game is playable in VR.
Get Unreal PT
Log in with itch.io to leave a comment.
That's amazing its look the PS4 game Well done, bro
That's an amazing recreation of the game! Well done, bro! Thanks for the effort you've put into this project! it looks and plays amazing!
Any plans on making future versions, with little more added details? Like the cockroaches, that intense motion blur and weird noises from the infinite corredor loop, or even finishing the final cutscene?