Hat in Time is an adorable indie platformer that captures and expands the satisfying movement and whimsical natures of classic 3D games like Super Mario Sunshine and Banjo-Kazooie. Originally crowdfunded in 2013 it finally saw a release last October for PC,
On the technical side, the game runs on the older Unreal Engine 3 which has some really vague system requirements.
Processor: 3.0 GHz processor
Memory: 4 GB RAM
DirectX: Version 9.0c
Storage: 5 GB available space
So if you get this game only to discover that your computer is struggling even on the minimum settings there is still a fair amount of tweaks and changes you can do to go even lower and get acceptable performance.
For the purposes of testing, I will be using an Intel Pentium G326, a budget-oriented Haswell Dual Core that includes an Integrated IntelHD GPU. This will be paired with 8 GB of RAM but no dedicated GPU.
We will be tweaking a single configuration file located in the game's installation directory, hat in time game, config, hatintimesystemsettings.ini. This can be opened using basic text editors like notepad or notepad++.
On the lowest settings game's shadows are only rendered on objects that are very close to the camera. But setting DynamicShadows and LightEnvironmentShadows to false disables shadows completely.
Some of the variables at CompositeDynamicLights and SecondaryLighting can be set to false to disable some of the game's light. However, you might want to ignore DirectionalLightMaps. Settings it to false will provide a large performance boost but make all indoor surface's black. This might be a valid tweak for outdoor levels, but everything else is impossible to navigate.
Post Processing Effects
The game uses some slight post processing to make the colors more vibrant. This can be disabled by setting bAllowPostProcessing to false. The visual impact is small, and it does not seem to affect gameplay in any way.
Depth of Field
Hat in time utilizes a Depth of Field to blur out objects after a certain distance. This is used effectively to hide objects that are beyond the draw distance or background objects that have a very low resolution.
This effect can be very notorious in larger level on the lowest settings, and some people might choose to remove it for aesthetically or performance-related reasons (or both!).
This can be disabled by settings DepthofField to false.
Draw distance determines the distance between a player and an object before it is rendered, usually first as a low poly object and then as a fully detailed model.
This is controlled by the MaxDistanceScale, and if you are desperate for extra performance you can reduce it to almost any arbitrary value under 1. A value of 0.2 causes most game objects to appear as you walk by which might dramatically affect your gameplay experience. During my own personal experimentation values around 0.6 seemed to provide a good performance boost without making the game unplayable.
External resolution determines the size of the Window the game is rendered on. Internal resolution determines the resolution only of the game's 3D objects, without affecting UI.
Reducing Internal Resolution can be a powerful tool in increasing performance. You can set a ludicriously small resolution and still have a readable UI.
In the case of Hat in Time, this is controlled by the ScreenPercentage variable were 100 represents 100% external resolution. If you change it to 50 and you will definitively notice a difference. Experiment until you find a value that works for you.
Right under the block that contains all previous variables, there is a set of texture Max and MinLOD values.
Simply put, by manually changing all min LOD values to 1 and max LOD values to some arbitrary number you can limit the resolution of all the game's textures.
For example, reducing them all to 16 causing a significant reduction in quality compared to the "normal" low present.
If you are bold enough to drop max LOD values to 1 all the game's surfaces will become monochrome and many objects like grass or character's eyes will lose all semblance of detail.
Hard to believe it is still the game, isn't it?
However, I would not recommends you drop textures under 16. Some surfaces that are supposed to be transparent will become opaque on that resolution, making the game much harder than it needs to be.
The resulting game performance was much better than I expected and often close to 50 fps. It would drop to around 30 when it needed to load something or when moving around the map really quickly mainly due to Dual Core CPU used.
There are still some levels that are particularly GPU heavy but I found no issues playing the game, especially considered how heavily it relies on its precise movement system.
The full final configuration file can be downloaded from the link below: