mirror of
https://github.com/InstanceBrick/nightcap.git
synced 2026-10-23 18:01:05 +02:00
Add a pre-commit check for added changelog lines over 110 characters. Roblox has no Nintendo glyph set, so the roadmap item cannot be met.
68 lines
3.2 KiB
Markdown
68 lines
3.2 KiB
Markdown
# Nightcap roadmap
|
|
|
|
What Nightcap is working toward, in priority order. Items move to
|
|
[Shipped](#shipped) when they land on `main`. Open an issue to propose a
|
|
change to this list.
|
|
|
|
## 1. Settings UI
|
|
|
|
Nightcap is configured by editing `~/.config/mocktail/config.yaml`. Most
|
|
people never open it, so they never find the FPS unlock or the vsync switch.
|
|
|
|
Goal: a small GTK4 settings window, reachable from the app menu and from a
|
|
`--settings` flag, that reads and writes the same `config.yaml`.
|
|
|
|
- Graphics tab: backend, frame rate limit, vsync, small texture upscale.
|
|
- Input tab: the `input.raw_mouse` toggle and controller options.
|
|
- Advanced tab: FFlag overrides with a plain text editor for `fflags.json`.
|
|
- Discord tab: every field in the `discord_rpc` block, so a friend can see
|
|
what you are playing and you can switch it all off in one click.
|
|
- Changes apply on next launch. A restart button restarts Nightcap.
|
|
|
|
Done when every option in `config/mocktail.example.yaml` that a player would
|
|
touch can be set without a text editor.
|
|
|
|
## Shipped
|
|
|
|
- Lower input latency: frames are presented as soon as they are ready.
|
|
- Controllers hot-plug without a restart, and a pad that is unplugged mid-game
|
|
releases its held buttons and sticks instead of leaving them stuck.
|
|
- Mouse look keeps responding after a long turn, instead of going dead until
|
|
the pointer travels back from past the screen edge.
|
|
- Optional raw mouse input: `input.raw_mouse` in `config.yaml` sends look
|
|
deltas in host units, so fractional display scaling no longer changes
|
|
first-person sensitivity.
|
|
- Small textures upscaled 4x by default, with PNG overrides in
|
|
`~/.config/mocktail/textures`.
|
|
- ETC2 textures decoded on desktop GPUs without stutter.
|
|
- No more error 319 kicks after joining a server.
|
|
- Roblox sees the real host RAM and screen size.
|
|
- Desktop launcher that works on Wayland and finds the installed binary.
|
|
- Discord Rich Presence on by default, with the experience name, creator,
|
|
elapsed time, the experience icon with a Roblox badge, and a join button
|
|
when the server is public. See the [FAQ](../FAQ.md) to switch it off.
|
|
- Custom Discord presence: title, details, state, and large and small icons
|
|
from `config.yaml`, with `{place_name}`, `{place_icon}`, and
|
|
`{creator_name}` placeholders.
|
|
- `--profile` writes a Chrome-format trace of the Vulkan adapter's work,
|
|
including shader and pipeline creation, readable in `ui.perfetto.dev`.
|
|
[BENCHMARKING.md](BENCHMARKING.md) fixes the experiences to measure and
|
|
`scripts/summarize_profile_trace.py` builds the before and after table.
|
|
- Texture uploads no longer stall the frame they land on: ETC2 decode and
|
|
resampling run on a persistent worker pool.
|
|
- Less stutter while joining an experience and while textures load in. See
|
|
the [changelog](../CHANGELOG.md) for the numbers.
|
|
- The host main thread rests between engine polls instead of spinning, and
|
|
GameMode's core pinning is released, so Roblox's workers spread across
|
|
every core. See [PERFORMANCE.md](PERFORMANCE.md).
|
|
- Own app ID `io.github.CoderDayton.nightcap`, so Nightcap installs next to
|
|
upstream.
|
|
- AppImage and signed Flatpak releases on every `v*` tag, with the Flatpak
|
|
repo on GitHub Pages.
|
|
|
|
## Not planned
|
|
|
|
- Replacing the `mocktail` binary and config names. Keeping them makes
|
|
upstream merges clean.
|
|
|