OpenRA / OpenRA/OpenRA

performance, remove the forced renders

Open
#18,491 1 comment 2 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Idea/Wishlist Performance
Dominant language
C#
Stars
17.4k
Forks
3k
Avg merge
1d 12h
Merged PRs (30d)
14

Description

as once discussed in discord developer chat,

release latest. at Game.cs Loop().

the game main loop use a force render. on systems where rendering becomes slow the force render causes the main loop to become slower and slower - ending up loop resulting in 120% cpu usage, locking up multi player games.

the game also forces a minimum of 16 fps at the default game speed.

background: i have the issue that render time drops from 6-9ms to 20+ ms at times. likely gl, driver, cooling related. but i assume the full CPU usage happens on any slow systems.

request:

  • let the game detect if rendering is slow, skip frames
  • let the game detect that in general it can't keep up in both rendering and logic frames, perhaps drop in game speed or log console message, pause to catch up, exit
  • let the game skip render frames - rather than forcing them
  • send warnings to the console, indicating
  • bring back the possibility - like in previous releases - to run the game at 10 to 20 fps. works fine.

additional:

  • register also a network delay, next to render and logic delay
  • differentiate in the network ping/latency stats between network delays and render delays, allowing players to determine if the network is causing the issue or their PC

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start at Game.cs Loop() and inspect the forced-render and minimum-FPS behavior described in the issue. Determine how rendering, logic, and network delays are currently tracked, then define tests or observable checks for skipped render frames, slow-system warnings, configurable lower frame rates, and distinct network versus render latency.

Written by the indexing model from the issue text.

Assessment

Tech stack
csharp
Domain
game-dev, performance
Issue type
Bug
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.