


No releases yet
Adds virtual reality support to flatscreen Unreal Engine games
- Stereoscopic Rendering: Presents the game in full 3D, not a flatscreen in VR
- 6 Degrees of Freedom: Headset movement and rotation is tracked in-game
- Configurable Profiles: Save and share your settings for each game
- Input Binding: Map VR controller buttons to game actions
- Controller Tracking: Link hand movement to in-game objects
- Synchronized Rendering: Renders both eyes at the same time, reducing discomfort
There are so many features I want to add, and so many refactorings that could improve the code.
- Input Binding: Map VR controller buttons to game actions via keyboard/mouse/gamepad input. Add a button to resetthe view rotation/position.
- Controller Tracking: Link hand movement to in-game objects. Make them rotate and move according to how yourhands move. Allow configurable offsets for the UI so that it feels like your hand is holding a gun, for example.
- Synchronized Rendering: Renders both eyes at the same time, reducing discomfort. This one isn't as importantbecause the mod seems to perform pretty well so far. But at lower framerates, some people may experience discomfort isthe positions of objects aren't aligned for the left/right eyes.
- Optimization: Do more profiling to increase framerate. VR should be accessible to as many people as possible, sowe as a community need to make sure that our mods aren't too limited by hardware.
- VR For All: Abstract the graphics, VR, and game engine services into interfaces that can be implemented for othergraphics APIs/VR runtimes/game engines; this will definitely be necessary for D3D12, and if I want to add supportVulkan/OpenGL, it'll be even more important. Probably won't be used for other game engines, but if someone uses a gameengine written in any language that can interop with C++, imagine the possibilities! Probably not useful for VR,though, since OpenXR is the future... hopefully there won't ever be a replacement VR runtime that I'll have to addsupport for.
- UE Version Detector: Reduces the configuration necessary for new games. Would use the same information as theDetails pane in File Explorer to determine the Unreal Engine version.
- Console Output: Enable/disable the log window; also, don't use a basic terminal for output, show it in thenice-looking app UI.
- Unreal Engine 5: It's not too different from UE4, so add support to UML if Russell.J doesn't have time
- Build System: Use meson so it's faster and cross-platform. Would also reduce dependence on Rider/Visual Studio
- Stop Using UML: Build a home-grown solution that's better for this specific use-case
- Dependency Injection: Inject service class instances at runtime so there aren't as many static members

If you have any ideas for features or want to implement a feature yourself, please email me or send a DM on Discord toTheNewJavaman#3966.
- Rider 2022.1 EAP: For writing C++ code; it has a much better code formatter than Visual Studio, is much faster,and has superior refactoring capabilities. Also supports Python for the rizin script. Get it for free via the earlyaccess program in the Jetbrains Toolbox app
- Visual Studio 2022 Preview: For writing C# code or HLSL shaders; Rider doesn't support WinUI nor Hot Reload; also,VS supports profiling both the CPU and GPU for C++, compiling HLSL, and packaging the final app. Get it for free viathe Visual Studio installer
- Sourcetree: My favorite Git GUI; the main thing is its support for multiple stashes; get it for free fromAtlassian
- Rizin: Used to reverse engineer UE/game binaries. Get it for free from GitHub
My most-used commands for reverse-engineering game binaries
[command]?
: Show the help menuo [filename]
: Open a binary (exe, dll, lib)ipd [filename]
: Open a debug symbols file (pdb)Po [filename]
: Open a project (rzdb)Ps [filename]
: Save project to file (rzdb)aa
: Run quick analysis on the binary (better for no PDB)aaa
: Run longer analysis on the binary (better for PDB, includes function autonaming)aflq~[function]
: Search for a functions [address|function]
: Go to an address or functionzaf [function] [signature]
: Create a signature for the current functionz
: List signatureszos [filename]
: Save signatures to file (sdb)zj | python rizin_to_uml.py [numbytes]
: Print signatures in UML format; seerizin_to_uml.py