Skip to content

Add ability to execute console commands from file - #96

Merged
praydog merged 1 commit into
praydog:masterfrom
keton:feat/execute_console_script_file
Mar 3, 2024
Merged

praydog merged 1 commit into
praydog:masterfrom
keton:feat/execute_console_script_file

Conversation

@keton

@keton keton commented Jan 7, 2024 •

Copy link
Copy Markdown
Contributor

Certain game profiles need CVars from outside the scope provided by UEVR. Editing engine.ini makes profile sharing more complicated.

This changeset adds ability to execute commands from user_script.txt located inside game profile folder.
Syntax and effects are the same as commands were entered in console. Namely one command per line, space separated arguments.

This allows flexible customization bundled in profiles that need it.

Example use case is Abzu where adding snippet r.WaterSurfaceReflections 0 to user_script.txt disables distracting visual effects.

EDIT: Revised version uses UEngine::Exec() which allows any command that would work in UE native console.

It also supports comments so following syntax is correct:

# this is a full line comment
; this as well
r.WaterSurfaceReflections 0 # and this is inline comment
stat fps ; this as well

@keton
keton force-pushed the feat/execute_console_script_file branch from c272b8c to 8f8c6f1 Compare January 12, 2024 11:54
@mark-mon

Copy link
Copy Markdown
Contributor

I like this change a lot

@MatLePirat

Copy link
Copy Markdown

Sorry i am newbie... how to do this change ?

@keton

keton commented Jan 23, 2024 •

Copy link
Copy Markdown
Contributor Author

If you're a noobie you'll need to wait for this PR to be approved and then release with the change to be made. If you're willing to learn how to compile software from source you can pull my branch and build your own .dlls

@MatLePirat

Copy link
Copy Markdown

Thank you so much for your answer, and for your work generaly.
My problem is in abzu, i dont know in wich file i should write the command "r.WaterSurfaceReflections 0"
i try in some files but it dont work for now... i must change it in console each time i launch the game :(
i hope your add will come soon 0:)

@keton

keton commented Jan 24, 2024 •

Copy link
Copy Markdown
Contributor Author

Without this change you need to find game profile directory which should be %LOCALAPPDATA%\AbzuGame\Saved\Config\WindowsNoEditor\. There will be a bunch of .ini files and you should either create or edit Engine.ini. Then add:

[SystemSettings]
r.WaterSurfaceReflections=0

When this change lands you'd create user_script.txt in UEVR profile and put r.WaterSurfaceReflections 0 there instead. And then profile can be shared complete with engine variable changes :)

@keton
keton force-pushed the feat/execute_console_script_file branch from 8f8c6f1 to 21330ea Compare January 26, 2024 11:23
@praydog

praydog commented Jan 26, 2024 •

Copy link
Copy Markdown
Owner

Should look into using UEngine::exec now, it is possibly more stable, though would have to examine its stability across games as it is new

It also has access to the "exec" functions that are completely unseen by the console manager (I think anyways? I'd have to double check whether this can still run commands like "fly")

@keton

keton commented Jan 26, 2024 •

Copy link
Copy Markdown
Contributor Author

@praydog Sure, I can do that. It will be also smaller, more localized change, easier to merge with everything else.

But from my playing around with exec(L"show fps") as a part of #170 I've noticed game freezes for quite a few seconds when exec() is first called. Is that normal?

@praydog

praydog commented Jan 26, 2024 •

Copy link
Copy Markdown
Owner

Yes it's part of the scanning process. It can be optimized more.

@keton

keton commented Jan 26, 2024

Copy link
Copy Markdown
Contributor Author

I'll try then. In case loading list of commands takes a long time we can revert to current implementation. For some games I needed 30 or so parameters. I hope it does not need to scan like this for each one.

@praydog

praydog commented Jan 26, 2024

Copy link
Copy Markdown
Owner

No, it only needs to do it once

@keton

keton commented Jan 27, 2024

Copy link
Copy Markdown
Contributor Author

@praydog I've just noticed that UGameEngine::exec() returns void. It would be useful to know if engine recognized and executed the command. Like in UE4SS Console Unlocker when it says 'unknown command' on failure. Is something like that possible in UEVR?

Anyhow new version of this patch using exec() is written. Now I'll do some testing and if that works update this pr. I've also added option to handle simple line comments with # this is the comment syntax.

Certain game profiles need CVars from outside the scope provided by
UEVR. Editing engine.ini makes profile sharing more complicated.

This changeset adds ability to execute commands from `user_script.txt`
located inside game profile folder.

This allows flexible customization bundled in profiles that need it.

Syntax and effects are the same as commands were entered in native console.
Namely one command per line, space separated arguments.

Comments are supported in form of whole line comments starting with '#'
or ';'. Additionally inline comments are supported in form of
`command param # comment`

Example is Abzu where addding snippet `r.WaterSurfaceReflections 0` to
`user_script.txt` disables distracting visual effects.
@keton
keton force-pushed the feat/execute_console_script_file branch from 21330ea to 6efe0d3 Compare January 27, 2024 11:09
@keton

keton commented Jan 27, 2024

Copy link
Copy Markdown
Contributor Author

Quick test report.

Result: exec() works with my patch. On some occasions there's a few seconds freeze when it loads.

Platform: 7900x, 4090, Quest 3, Virtual Desktop, VDXR
Tested games:
image
Exceptions: Titan station, Call of Cthulhu and Aven Colony

UEVR was injected on 30s delay. Some of those games will crash without it but that was also the case before.

@praydog
praydog merged commit 03237f9 into praydog:master Mar 3, 2024
@keton
keton deleted the feat/execute_console_script_file branch March 4, 2024 10:33
wyerdev pushed a commit to wyerdev/UEVR that referenced this pull request Apr 26, 2026
Certain game profiles need CVars from outside the scope provided by
UEVR. Editing engine.ini makes profile sharing more complicated.

This changeset adds ability to execute commands from `user_script.txt`
located inside game profile folder.

This allows flexible customization bundled in profiles that need it.

Syntax and effects are the same as commands were entered in native console.
Namely one command per line, space separated arguments.

Comments are supported in form of whole line comments starting with '#'
or ';'. Additionally inline comments are supported in form of
`command param # comment`

Example is Abzu where addding snippet `r.WaterSurfaceReflections 0` to
`user_script.txt` disables distracting visual effects.
Alot1z pushed a commit to Alot1z/uevrLCX that referenced this pull request Oct 4, 2026
Certain game profiles need CVars from outside the scope provided by
UEVR. Editing engine.ini makes profile sharing more complicated.

This changeset adds ability to execute commands from `user_script.txt`
located inside game profile folder.

This allows flexible customization bundled in profiles that need it.

Syntax and effects are the same as commands were entered in native console.
Namely one command per line, space separated arguments.

Comments are supported in form of whole line comments starting with '#'
or ';'. Additionally inline comments are supported in form of
`command param # comment`

Example is Abzu where addding snippet `r.WaterSurfaceReflections 0` to
`user_script.txt` disables distracting visual effects.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants