Refresh icon indicating copy to clipboard operation
Refresh copied to clipboard

[Proposal] Allow the same level to have a different root level hash per game

Open Beyley opened this issue 1 year ago • 9 comments

Motivation

Some modded assets (LBP1 GMATs/scripts) do not load (or do not work correctly) in newer versions of the game, and some level mechanics may not function in newer versions (say, a level is cheesable on LBP3 by just moving back a bunch of layers, or a visual LBP1 effect is broken in LBP2, making the level unplayable).

While a level creator could work around these issues by uploading LBP1/2/3 specific versions and tagging them as such, you could only enforce that for LBP1 (see #401) as lbp2Only does not exist. This also has the issue of stats/scores not being shared, which is not ideal for creators when reviews/comments are split between multiple copies of the level.

Description

I propose that GameVersion and RootResource be removed from GameLevel and instead we store a set of hashes

string? Lbp1RootResource
string? Lbp2RootResource
string? Lbp3RootResource
string? LbpVitaRootResource
string? LbpPspRootResource
string? LbpBetaRootResource

Along with the flags

string? Lbp1Only
string? Lbp2Only

For an example of how this would work, when searching for LBP2 compatible levels, instead of searching for GameVersion == LBP2 or LBP1, we search for "has lbp1 root resource and not lbp1 only, OR has lbp2 root resource", for LBP3 its "has lbp1 root resource and not lbp1 only, or has lbp2 root resource and not lbp2 only, or has lbp3 root resource" for vita its just "has vita root resource", same with PSP, LBP1, and Beta

This would allow people to make the same level for all 6 game versions with different tweaks/fixes depending on the game, and have it work as intended in all of them. This would be especially neat for cross-platform levels, which isnt possible normally, say Vita and LBP2 (its possible to port levels between the games if you are dedicated enough with toolkit), or PSP and LBP1 (its possible to port PSP levels to work on the mainline games, aidan has a tool for it). All while matching ratings/scores between the versions

This doesnt really touch many parts of Refresh's codebase, and still follows KISS. Theres very little logic that would need to be added, since almost all of the work to do this is complete thanks to the universal assets support, and our improved FromOld work.

I'm not sure how this would look in the site API side for merging multiple levels, itd just be some endpoint "you can merge two GameLevel you uploaded together through an API endpoint, and you pick which gamelevel to use the metadata/stats from, and the other one is just deleted".

On the site this can just be displayed like Published for LBP1, LBP2, LBPV.

When it comes to unpublishing a level, i think when you unpublish, it should only unpublish the resource which matches the current game, say removes the vita resource on vita, or the psp resource on psp, or if you have LBP1 and LBP2, unpublishing on LBP2/LBP3 would remove the LBP2 one, while unpublishing on LBP1 would only remove the LBP1 hash. The site unpublish button should remove the level completely though, with extra buttons on the site to remove specific game hashes aswell. This is mainly because when updating a level on PSP, it fully unpublishes the old one first, you dont want an update to your PSP resource to remove every other game aswell

Beyley avatar May 11 '24 22:05 Beyley

the only thing i'm not sure on is the Vita/PSP cross platform stuff, but otherwise this would be a great addition

even LBP1 levels tend to break a bit in LBP2 (because tags suddenly become visible) so it'd be useful to be able to upload a LBP2 specific version

the only question is how would uploading levels like this work - do you just "update" the level in the game you wanna add an additional resource hash to?

Arcadius2006 avatar May 12 '24 09:05 Arcadius2006

the only thing i'm not sure on is the Vita/PSP cross platform stuff, but otherwise this would be a great addition

If we were to do it for LBP1/2/3, might as well for all of them? it honestly would complicate the code more to disallow it. its not out of the question that someone would port their PSP level to PS3 (aidan has a tool which does it semi-automatically). and same with LBP2/Vita, if someone was dedicated enough, they totally could port an LBP2 level to vita using toolkit and some custom assets.

the only question is how would uploading levels like this work - do you just "update" the level in the game you wanna add an additional resource hash to?

read the third to last paragraph on the issue

Beyley avatar May 12 '24 10:05 Beyley

with the 1st point i was mostly talking about PSP - while it is true that you can port levels between the two games, they run on entirely different engines and thusly play completely differently, so i wouldn't be sure if letting a user merge a PSP level with a vita/PS3 only would be good

as for the latter, you will be only able to merge levels using the website? i think you should be able to do it from within the game itself as i'm not sure if people would be willing to export their levels using toolkit for this

Arcadius2006 avatar May 12 '24 10:05 Arcadius2006

as for the latter, you will be only able to merge levels using the website? i think you should be able to do it from within the game itself as i'm not sure if people would be willing to export their levels using toolkit for this

i think you misunderstand what i wrote you upload both copies ingame and then merge them on the site

Beyley avatar May 12 '24 10:05 Beyley

i'd like to propose another idea (that might get rejected)

so, since personal computers can perform much better than PS3 can with a proper configuration, maybe you could make it so playing on RPCS3 also counts as playing on PS4? perhaps this can be toggleable so players with shittier rigs can play low-fidelity versions of levels, but i think it'd be better than letting PS3 users play possibly unoptimized levels

we could even extend this to LBP1 and 2 aswell if we did this

Arcadius2006 avatar Nov 27 '24 15:11 Arcadius2006

> playing on RPCS3 also counts as playing on PS4?

A large selling point of this feature would be for mod compatibility reasons, and this would completely destroy that, as not all PS4 mods work on PS3, and vice versa. Also, "LBP1 PS4", or "LBP2 PS4" isnt going to be a concept we will be adding to the codebase, since that does not actually exist in reality. The solution is just to tell people to optimize their level better. if a level runs horribly on PS3, it wont get as many likes/will get disliked and will be less prioritized by the cool levels algorithm, so less people will play it.

I dont think letting people do RPCS3/PS3 specific levels is a good idea, it will only fracture the community even more, and if a level only works on RPCS3, or only works on PS3, thats a bug in RPCS3 that should be reported upstream, as it's intending to be an emulator.

Beyley avatar Nov 27 '24 17:11 Beyley

The solution is just to tell people to optimize their level better. if a level runs horribly on PS3, it wont get as many likes/will get disliked and will be less prioritized by the cool levels algorithm, so less people will play it.

you see, this is the thing. a similar situation already happened lots on LBP3 where there were lots of PS4 only-levels or levels that ran bad on PS3, and any requests for optimization weren't taken into account simply because the majority of players played on PS4. i'm kinda worried the same will happen with RPCS3, though maybe i shouldn't be, since not a lot of people have high tier PCs anyway

Arcadius2006 avatar Nov 27 '24 17:11 Arcadius2006

tldr; i'm just being paranoid.

whoops.

Arcadius2006 avatar Nov 27 '24 17:11 Arcadius2006

a similar situation already happened lots on LBP3 where there were lots of PS4 only-levels or levels that ran bad on PS3, and any requests for optimization weren't taken into account simply because the majority of players played on PS4. i'm kinda worried the same will happen with RPCS3, though maybe i shouldn't be, since not a lot of people have high tier PCs anyway

I think this is just a skill issue of the creator then, also there are also other aspects of creating a level besides optimization where creators tend to fail and then ignore all critizism.

Toastbrot236 avatar Nov 27 '24 17:11 Toastbrot236