AchetaGames / Epic-Asset-Manager

A frontend to Assets purchased on Epic Games Store
https://flathub.org/apps/details/io.github.achetagames.epic_asset_manager
MIT License
408 stars 21 forks source link

[Feature Request] Allow modification of Engine Association #212

Open RicardoEPRodrigues opened 2 years ago

RicardoEPRodrigues commented 2 years ago

Is your feature request related to a problem? Please describe. I mostly work on C++ Unreal Engine projects, thus I have little need to directly open the engine without the IDE. I tend to open my IDE (Rider), then compile the code and run the engine from there. Additionally, I tend to work with colleagues that use Windows, thus the .uproject file tends to describe the EngineAssociation field as 5.0 and not my installed engine GUID.

My IDE, Rider, detects the engine by looking at the project's EngineAssociation field. Currently, I need to open the file and set the field by hand (as the Epic-provided build does not have bundled the Engine Version Selector). If possible, I would like to have the ability to do that from the Epic Asset Manager.

Describe the solution you'd like I envision a dropdown option in the Project details, that would allow me to override the EngineAssociation field. The dropdown would contain a list of the available engines in the system. Upon selecting one of the engines, the .uproject file would be updated with the EngineAssociation field now containing the respective engine GUID. A screenshot of what I envisioned can be seen below.

Describe alternatives you've considered While this is an easy option, I do understand that the proposed solution has some design flaws. The dropdown performs an action without user confirmation. Adding a user confirmation to a dropdown is not a standard practice and is not usual for users, thus creating confusion.

Another solution can be to allow the selection of the Engine in its current dropdown and have a button near the Engine Association to override the current option with the selected engine.

Yet another is to have the Launch button override that option before launching the engine. This solution might be confusing and might not deal with the problem well.

Additional context

Screenshot from 2022-08-11 12-09-26

aknarts commented 2 years ago

Technically if you select a different engine from the Engine drop down and Launch the Engine it will launch the project with that and override the .uproject file.

There are several options hidden at the moment, one of them would be a "Common fixes" kind of thing bellow the "Logs" dropdown, some .uproject modifications will be there, others will be with plugin management for project. So editing the .uproject file is a possibility and I think I do already have the option in the code. My only worry is corrupting the file so it "bricks" the project, so need to think about backing it up before the modification.

I would be also curious if we can just handle the associations inhouse and have a "Windows style" association i.e. instead of the GUID have a 5.0 association in the Installs.ini so the projects are transferable without the need to pick up the correct version. As it is now EAM pick the closest available Engine version based on what is in the .uproject file from Windows.

RicardoEPRodrigues commented 2 years ago

Is it possible to create an Installs.ini entry with the version number pointing to where the engine is? Essentially creating the same effect with a lot fewer problems.

aknarts commented 2 years ago

I am not sure if that would work and not be discarded as invalid GUID, will test it out and see.

RicardoEPRodrigues commented 2 years ago

I did a quick test by creating an entry as follows:

5.0=/path/to/Documents/Unreal Engine/5.0.3

Using Rider and having the .uproject with "EngineAssociation": "5.0", it was able to correctly open the project, compile and run it.

This seems to work, but it would be good to see if this works with other IDEs.

aknarts commented 2 years ago

Yeah that is the test I would have done... My only concern is if the Engine would just accept that or not, IDE's should be fine. Epic is kind of lax in the format of the file themselves so I guess anything goes. I will look into this more once I get back home from the family getaway :).