8000 Explore replacing the game's Scaleform GFx UI with a new Avalonia UI · Issue #65 · tera-arise/arise · GitHub
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content
Explore replacing the game's Scaleform GFx UI with a new Avalonia UI #65
@alexrp

Description

@alexrp

This is a very, very long term project that will require a lot of experimentation.

The idea is to completely rip out the ancient, slow, and ugly Scaleform GFx UI from the game. We would replace it with a new UI, written from scratch, using Avalonia.

Here's what I think we would roughly have to do:

  • Remove all calls to Scaleform GFx in the client.
  • Hook any functions necessary to get game notifications relevant to the UI subsystem.
  • Figure out how to forward relevant keyboard/mouse/controller input events to the UI subsystem.
  • Write an Avalonia platform backend that hooks into the game's rendering.
  • Actually implement the entire game UI. 😰

For the Avalonia backend, I think we would basically just do a classic IDXGISwapChain::Present() hook. In the hook, we make Avalonia render using Direct2D or Win2D, which should be fairly easy since Avalonia already has an official Direct2D backend that we can learn from. Using Direct2D is advantageous because it can interoperate with Direct3D.

Note: TERA only works with DirectX 11.0+ since the 64-bit upgrade. However, Direct2D/Direct3D interop will require Direct3D feature level 11.1. Unfortunately, the client currently hardcodes feature level 11.0 when calling D3D11CreateDevice(), so we will need to patch that.

Metadata

Metadata

Labels

area: clientIssues related to the launcher and client integration.area: researchIssues related to reverse engineering of the game.area: toolsIssues related to the internal CLI tools.state: deliberationIssues that require design work and/or discussion.

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions

    0