Blurry/screen tearing in 2d platformer

2024-08-26 16-56-42.mkv (12.1 MB)

I’m getting further along in development of my first game and I’ve been feeling really good about working in unreal although I am having some issues with this strange motion blur type effect on everything. I’ve been trying to figure it out on my own for a month or so now and I think it’s finally time to reach out for some help. If anyone could help me figure this out, that would be awesome! =]

Here’s a list of everything I’ve done so far:

Problem: Experiencing screen tearing and motion blur-like artifacts when moving in a 2D project in Unreal Engine. The issue manifests as translucent diagonal lines or blur around the edges of objects, especially during movement.

Testing Observations: The problem persists even in different Unreal projects (including a marketplace demo) and across multiple PCs. It seems independent of frame rate, V-Sync settings, and occurs even in spectator mode.

List of Everything I’ve Tried:

Rendering Settings in Project Settings:

  1. Anti-Aliasing:
    Disabled all anti-aliasing (including FXAA, TAA, and MSAA).
    Tested different anti-aliasing methods (None, FXAA, MSAA).

  2. Motion Blur:
    Disabled motion blur globally in Project Settings, Camera settings, and Post-Processing Volumes.

  3. Screen Percentage:
    Verified that screen percentage is set to 100%.
    Tested with different screen percentage values to rule out scaling issues.

  4. V-Sync:
    Enabled/disabled V-Sync in Project Settings and Nvidia Control Panel.
    Tested V-Sync using console commands (r.VSync 1 and r.VSync 0).
    Tested with various V-Sync settings (On, Off, Adaptive) in the Nvidia Control Panel.

  5. Fixed Frame Rate:
    Enabled/disabled “Use Fixed Frame Rate” in Project Settings (set to 60 FPS).
    Tested different frame rate settings and ensured they match the monitor’s refresh rate.

  6. Temporal AA Jitter:
    Disabled Temporal AA Jitter and related settings.
    Used console commands like r.TemporalAACurrentFrameWeight 0.1 to minimize potential ghosting.

  7. Separate Translucency:
    Disabled “Separate Translucency” to prevent unnecessary sorting overhead.

  8. Nanite:
    Disabled Nanite, even though it’s typically for 3D geometry.

  9. Texture Streaming and Mip Maps:
    Disabled texture streaming to force high-resolution textures.
    Increased texture streaming pool size with r.Streaming.PoolSize console command.
    Verified that mip maps are set to a bias of 0 to avoid unexpected blurring.

Camera Settings:

  1. Camera Lag:
    Disabled camera lag entirely to rule out smoothing artifacts.

  2. Tick Group Settings:
    Experimented with different tick groups (Pre-Physics, Post-Physics).
    Aligned the camera and character tick groups to ensure consistency.

  3. Orthographic vs. Perspective Mode:
    Tested the camera in both orthographic and perspective modes.

Hardware and System Settings:

  1. Nvidia Control Panel Settings:
    Set Power Management Mode to “Prefer Maximum Performance”.
    Set Low Latency Mode to “On” and tested with “Ultra”.
    Forced V-Sync settings and tested with G-Sync on/off.
    Adjusted settings like Maximum Pre-Rendered Frames to 1.

  2. Monitor Refresh Rate:
    Verified that the monitor is running at 60Hz and consistent across testing.

  3. Tested on Different PCs:
    The issue persists on multiple PCs with different hardware but similar Nvidia settings.

  4. Checked for Conflicting Background Applications:
    Ensured no overlays, recording software, or other background processes could be interfering.

Engine-Specific Settings:

  1. World Settings and Level Settings:
    Reviewed settings like Occlusion Culling, World Bounds Check, and Level Streaming to ensure they aren’t causing unexpected behavior.

  2. Velocity Pass and Output Velocity Settings:
    Disabled settings like velocity pass and output velocity for vertex deformation to reduce motion blur artifacts.

  3. Rendering Features:
    Disabled advanced features like Ray Traced Translucent Refractions, Forward Shading, and Mesh Distance Fields.

Additional Testing Approaches:

  1. Standalone Sprites vs. Tilemap:
    Tested placing a sprite directly in the level, bypassing the tilemap, to see if the issue is tilemap-specific.

  2. Testing with a Fresh Project:
    Created a brand-new 2D project with minimal setup (just a sprite and camera) to see if the issue persists without any complex settings.

  3. Different Resolutions and Window Modes:
    Tested in fullscreen, windowed, and borderless windowed modes.
    Ran the game in different resolutions (e.g., 1920x1080, 1280x720) using the r.SetRes command.

  4. Tried Disabling Post-Processing Volumes:
    Made sure no hidden or residual post-processing effects were active in the level or camera.

Other Suggestions from Forums/Research:

  1. Reviewing Global Settings Mentioned as “Best for 2D Games”:
    Searched through Project Settings, Camera settings, and World Settings for any settings tagged as optimized for 2D games but didn’t find anything that resolved the issue.

  2. Testing Different Versions of Unreal Engine:
    Considered testing in older or newer versions of the engine to see if the issue is tied to a specific build.