RDP with monogame development

Hey,

I develop MG on my desktop at home and I use RDP to work on it remotely (coffee shops, hotels, parents house, etc…). I discovered something which is interesting with FPS. At home, my game will run at solid at 60fps and never dips. When under RDP, it runs between 30-50fps. The FPS calculations are made in the Draw() and output with DrawString to the screen.

Why is it that RDP causes the applications draw to slow down? I get the transmission of the RDP screen would be laggy in the FPS area but it impacts the application loop itself.

I can totally live with this while working remotely, I just found it strange and was wondering if anyone had any ideas.

    private int Calculate()
    {
        double Delta = TimeSystem.Time.ElapsedGameTime.TotalSeconds; // Gametime
        CurrentFramesPerSecond = 1.0f / Delta;
        FPSBuffer.Enqueue(CurrentFramesPerSecond);
        if (FPSBuffer.Count > MAXIMUM_SAMPLES)
        {
            FPSBuffer.Dequeue();
            return (int)Math.Round(FPSBuffer.Average(i => i));
        }
        else
            return (int)Math.Round(CurrentFramesPerSecond);
    }

I’ve experienced that as well. This post briefly glosses over it, but I believe that RDP is affecting your graphics more deeply than just sending the pixel data across the wire. I don’t really know enough about it to say more than the post does:

You’re experiencing problems due to more than just latency. In the default configuration Remote Desktop does a poor job of handling graphics, making even the fastest server or Internet connection seem slow.

Are you using Windows 10 by any chance? this has greatly improved as of late, I had it working on a headless machine in a VM using a HDMI headless adapter for a short time.

EDIT

Regarding FPS, I think mine was VSync capped…

Hey MrValentine,

Yes, I’m going Win10 to Win10. It has improved but still seeing a weird FPS issue. It is totally workable, it just is annoying.

I still find it super strange the remote machine running the game and logging the FPS locally still says it running at 30fps. I figured it would log 60fps but then the frames would be lost through RDP.

I’ll have to play with the vsync. I do have it on.

Thanks!

1 Like

I’m just curious, why not sync it across a private git repo? I would go nuts programming over RDP. With git, you can just sync from your server to any development machine. Once done, commit the changes and it’s available on every device. It’ll also keep track of changes you make should you ever need to revert!

I use https://gitea.io/en-us/ - if you don’t want to run a server, grab the Windows version. Also, gitlab offers free private repos and I think github does too now.

I did use a repo at one point but I always forgot to commit. I also didn’t like it being in the public repo at Github but now that github has free private repos I might go back to the repo.

Definitely! It’ll save you a lot of time and effort. Make a reminder to commit. VS2019 has everything you need built inside of it. Check out Gitlab too. Good luck.