Setting up Unreal Engine to work with 2D is not a straightforward task. As a game engine focused towards 3D games, many of the default settings can change the overall look of 2D assets. This is a major obstacle for pixel-style games, where things such as pixel-perfect rendering are crucial to make these games look better.

This tutorial uses Unreal Engine 5 for the 2D game setup. You may use this tutorial for any Unreal Engine 4 projects, however some parameters may be different on the older version of the engine.

1. Modifying the Engine Settings for Pixel-Perfect Rendering

The following settings are based on Polyart Studio’s tutorials for the Pixel2D plugin:

Screenshot

These settings ensure that most of the postprocessing effects are disabled which causes distortions in texture color and sharpness. I’ve seen in other forums that some people have Anti-Aliasing enabled (either MSAA or TSR I believe), but from my experience, having this option disabled works best with pixel-style games.

The next settings may be optional. I haven’t tested how much they affect the ending result but it doesn’t hurt to have these. Go to “Scalability Settings” either through the viewport or the “Settings” button at the top-right corner:

Screenshot

You may notice during play testing, the sprites will have a slight blur effect despite having the anti-aliasing disabled. This has been noted to be an engine bug that only happens in the viewport when displaying big window sizes (i.e the viewport takes almost all height or in full screen mode using F11). If you play the game as “standalone game” this blur effect will no longer be present.

Source: https://polyart.gitbook.io/pixel-2d/guides/top-down-engine/top-down-engine-getting-started

2. Removing the Tone Curve (Camera Setup)

By researching forums and playing around with the camera settings, I’ve found a way to get rid of the colour tint that gets applied to textures during gameplay (this only occurs for objects placed in the world. UI Widgets for example will display exactly as the source assets). This is a postprocessing workaround that can be set in the camera options:

Screenshot

Once you’ve done this, if you still notice a colour difference between “lit” and “unlit” modes (you can change between them with F2 and F3 during play testing), that is because we still need to take care of one more thing: the “Tone Mapper”

NOTE: When setting this postprocess effect in the camera, make sure the setting “Post Process Blend Weight” is set to maximum in the “Camera Options” (select your target camera actor to find this setting). Otherwise, there wont be any changes on the final render or the camera will render everything black.

3. Removing the Tonemapper

Since 2D games usually do not rely on illumination, sprites should be rendered as previewed in the unlit mode of the viewport (since that is how the source sprites look). However, by default, the engine will render objects with a slight colour tint, making sprites look a bit desaturated. If you play around with the viewport “show” settings you will realize this is caused by postprocessing, more specifically the “Tonemapper” and “Tone Curve” settings. In step 2 we set up the camera to remove the “Tone Curve” and now we proceed to disable the “Tonemapper”. To do this we modify the default engine options through the “DefaultEngine.ini” file inside our project.

C++
  r.TonemapperGamma = 0
  r.TonemapperFilm = 0
  r.Tonemapper.Quality = 0
  r.ToneCurveAmount = 0
  r.Mobile.TonemapperFilm = 0
  r.MobileTonemapperUpscale = 0
  r.EyeAdaptationQuality = 0
  r.EyeAdaptation.ExponentialTransitionDistance = 0
Click to expand and view more

Source: https://georgy.dev/posts/disable-tonemapper/

Notes

When working with 2D projects, I usually create empty levels. Since these type of levels have no light sources, any camera actors that you add will render completely dark. A workaround to this is either work in “unlit” mode or add a directional light.

Start searching

Enter keywords to search articles

↑↓
ESC
⌘K Shortcut