flame-engine / flame-engine/flame

Consider detaching game from DevToolsService when not needed

Open
#3,316 1 comment 0 reactions 1 assignee Claimed by @filiph View on GitHub
enhancement
Dominant language
Dart
Stars
10.8k
Forks
1k
Avg merge
1d 20h
Merged PRs (30d)
21

Description

### What could be improved

Not a big deal, but currently, when running a game in debug mode, any `FlameGame` that is ever started will forever be retained in memory unless replaced with a different `FlameGame`.

From `FlameGame`'s constructor:

```dart
if (kDebugMode) {
DevToolsService.initWithGame(this);
}
```

There is no `DevToolsService.detachGame()` or anything similar.

![Screenshot 2024-09-21 at 14 25 08](https://github.com/user-attachments/assets/e78cc2ad-cea5-44ca-86c2-08b5c17ac3a7)

### Why should this be improved

This can be confusing when one's looking at memory (albeit I agree that one should be normally doing that in profile mode) and sees a game that's supposed to be gone a long time ago, and won't go away even after manual GC.

This almost sent me on a wild goose chase for a giant game-sized memory leak.

### Risks

- Some people might want to inspect their game _after_ it's been disposed?
- Could introduce a DevTools connector bug where game's disposed too soon, for example.

### More information

I'm not sure myself if this is something worth addressing. Just putting this here before I forget.

### Other

- [X] Are you interested in working on a PR for this?

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.