wrye-bash / wrye-bash

A swiss army knife for modding Bethesda games.
https://wrye-bash.github.io
GNU General Public License v3.0
455 stars 79 forks source link

Initial Starfield Support #667

Closed Infernio closed 7 months ago

Infernio commented 8 months ago

Central issue for tracking support. This is not about adding Bashed Patch support yet, just the basics for now (like FO4 before #482).

Needed Info

Later Stuff

Links

Infernio commented 8 months ago

Initial branch is up at inf-667-starfield. Search for TODO(SF) to find all open questions.

Arthmoor commented 8 months ago

The INI file the game made: Documents\My Games\Starfield\StarfieldPrefs.ini - This is also the only .ini file it made.

Location of load order is unknown - no plugins.txt file exists in AppData\Local

Default game language is most likely English but I thought this was largely determined by what region Steam and/or Windows is set to.

Arthmoor commented 8 months ago

Starfield - Voices01.ba2 Starfield - Voices02.ba2 Starfield - VoicesPatch.ba2 Starfield - WwiseSounds01.ba2 Starfield - WwiseSounds02.ba2 Starfield - WwiseSounds03.ba2 Starfield - WwiseSounds04.ba2 Starfield - WwiseSounds05.ba2 Starfield - WwiseSoundsPatch.ba2 Starfield.esm BlueprintShips-Starfield - Localization.ba2 BlueprintShips-Starfield.esm Constellation - Localization.ba2 Constellation - Textures.ba2 Constellation.esm data.bin OldMars - Localization.ba2 OldMars - Textures.ba2 OldMars.esm Starfield - Animations.ba2 Starfield - DensityMaps.ba2 Starfield - FaceAnimation01.ba2 Starfield - FaceAnimation02.ba2 Starfield - FaceAnimation03.ba2 Starfield - FaceAnimation04.ba2 Starfield - FaceAnimationPatch.ba2 Starfield - FaceMeshes.ba2 Starfield - GeneratedTextures.ba2 Starfield - Interface.ba2 Starfield - Localization.ba2 Starfield - LODMeshes.ba2 Starfield - LODMeshesPatch.ba2 Starfield - LODTextures.ba2 Starfield - Materials.ba2 Starfield - Meshes01.ba2 Starfield - Meshes02.ba2 Starfield - MeshesPatch.ba2 Starfield - Misc.ba2 Starfield - Particles.ba2 Starfield - ParticlesTestData.ba2 Starfield - PlanetData.ba2 Starfield - Shaders.ba2 Starfield - ShadersBeta.ba2 Starfield - Terrain01.ba2 Starfield - Terrain02.ba2 Starfield - Terrain03.ba2 Starfield - Terrain04.ba2 Starfield - TerrainPatch.ba2 Starfield - Textures01.ba2 Starfield - Textures02.ba2 Starfield - Textures03.ba2 Starfield - Textures04.ba2 Starfield - Textures05.ba2 Starfield - Textures06.ba2 Starfield - Textures07.ba2 Starfield - Textures08.ba2 Starfield - Textures09.ba2 Starfield - Textures10.ba2 Starfield - Textures11.ba2 Starfield - TexturesPatch.ba2

"video" Folder (yes, it's an all lowecase folder name) in Data which contains:

PowerVision_VoidForm.bk2 ArtifactVision01.bk2 ArtifactVision02.bk2 ArtifactVision03.bk2 ArtifactVision04.bk2 ArtifactVision05.bk2 ArtifactVision06.bk2 ArtifactVision07.bk2 ArtifactVision08.bk2 ArtifactVision09.bk2 BGS_LOGO_1080p_BinkVersion.bk2 EndingVision.bk2 MainMenuLoop.bk2 PowerVision_Alien.bk2 PowerVision_AntiGravField.bk2 PowerVision_CreateVac.bk2 PowerVision_CreatorsPeace.bk2 PowerVision_Earthbound.bk2 PowerVision_Elemental.bk2 PowerVision_Eternal.bk2 PowerVision_GravDash.bk2 PowerVision_GravityWave.bk2 PowerVision_GravityWell.bk2 PowerVision_InnerDemon.bk2 PowerVision_LifeForced.bk2 PowerVision_MoonForm.bk2 PowerVision_ParallelSelf.bk2 PowerVision_ParticleBeam.bk2 PowerVision_PersonalAtmosphere.bk2 PowerVision_PhasedTime.bk2 PowerVision_Precognition.bk2 PowerVision_ReactiveShield.bk2 PowerVision_SenseStar.bk2 PowerVision_SolarFlare.bk2 PowerVision_SunlessSpace.bk2 PowerVision_Supernova.bk2

Arthmoor commented 8 months ago

There is no Starfield.ccc file right now. Unsure of whether one will exist in future or not since Bethesda has not commented on any Creation Club support yet.

Forced loads for everyone:

Starfield.esm BlueprintShips-Starfield.esm

If present these are also being forced to load:

Constellation.esm OldMars.esm

Those last 2 .esm files are preorder and premium copy bonuses so not everyone is going to have them.

Arthmoor commented 8 months ago

Starfield - Misc.ba2 contains all of the scripts, which would unpack into the usual Data\Scripts folder. They're definitely still Papyrus.

No source code is available yet, that won't drop until the CK does.

Arthmoor commented 8 months ago

Extracted the Starfield.ico file - wasn't sure what size you wanted so I grabbed the biggest one that IconViewer would let me.

StarfieldIcon.zip

Arthmoor commented 8 months ago

And the last bit of comment spam for now - the only registry entry actually relevant to the game I could find was in:

Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Steam App 1716740

Not sure what else you'd need from that, but it's the Steam information I assume you were talking about.

Infernio commented 8 months ago

Thanks 👍

Infernio commented 8 months ago

Is the right fixed order

Starfield.esm
BlueprintShips-Starfield.esm
Constellation.esm
OldMars.esm

?

Ortham commented 8 months ago

There is no Starfield.ccc file right now. Unsure of whether one will exist in future or not since Bethesda has not commented on any Creation Club support yet.

The game does look for one.

  • Valid BA2 versions seem to be 2 and 3, according to xEdit sources.

Where did whoever wrote this see version 3? I've only spotted 2 so far.

Cross-linking with loot/loot#1882 as I've already got answers to some of the OP's questions written there.

Ortham commented 8 months ago

Is the right fixed order

Starfield.esm
BlueprintShips-Starfield.esm
Constellation.esm
OldMars.esm

?

Nope, it's

Starfield.esm Constellation.esm OldMars.esm BlueprintShips-Starfield.esm

(I just figured that out in the last hour)

Ortham commented 8 months ago

Also regarding game detection / Linux support, LOOT's got that now implemented using Steam's libraryfolders.vdf and appmanifest files - it was pretty straightforward, except that the app IDs listed in the libraryfolders.vdf is not necessarily up to date (installing doesn't always add it, uninstalling doesn't always remove it), so LOOT instead speculatively tries to open the app manifest files for all supported games in all configured library folders, otherwise you have to tell people to relaunch Steam before you'll see the games (adding or removing library folders also does the job).

Infernio commented 8 months ago

Where did whoever wrote this see version 3? I've only spotted 2 so far.

xEdit has this: https://github.com/TES5Edit/TES5Edit/blob/c3f0246f3836888732273611e16754ba7c2e0c65/Core/wbBSArchive.pas#L510-L511

I don't know where the info comes from.

LOOT's got that now implemented using Steam's libraryfolders.vdf and appmanifest files

That is exactly what I'm planning too.

Ortham commented 8 months ago

xEdit has this: https://github.com/TES5Edit/TES5Edit/blob/c3f0246f3836888732273611e16754ba7c2e0c65/Core/wbBSArchive.pas#L510-L511

I don't know where the info comes from.

Git blames @ElminsterAU, not sure if @'ing him will notify him but hopefully he'll be able to answer.

ElminsterAU commented 8 months ago

I just committed it. Code came from zilav, and initial information from the SkyrimSE RE discord. Works well enough they SF1View doesn't crash when loading the BSA. That's all I can say so far.

Ortham commented 8 months ago

I had a look myself and all the Starfield - Textures*.ba2 files and Starfield - LODTextures.ba2 have a version of 3, the others are all version 2.

Arthmoor commented 8 months ago

Are the plugin-name-specific dirs the same (i.e. does meshes/actors/character/facegendata/facegeom and meshes/actors/character/facecustomization have folders with plugin names in them)? Are there new ones?

Those 2 folders don't appear to exist. So no idea if or how they're handling facegen this time.

Infernio commented 8 months ago

Does sound/voice/[plugin name] still exist?

Arthmoor commented 8 months ago

Yes, those files are in the 2 voice BA2 archives.

BeermotorWB commented 8 months ago

Are the plugin-name-specific dirs the same (i.e. do sound/voice, meshes/actors/character/facegendata/facegeom and meshes/actors/character/facecustomization have folders with plugin names in them)? Are there new ones? - sound/voice is still a thing, unsure about others.

Face meshes appear to be in meshes\actors\character\facegendata\facegeom\starfield.esm

There are also face mesh files (.mesh extension) that are present.

Voice and animation files are a different format (no more fuz) but are in the same general dir structure. Same with Terrain and LOD.

I'll confirm textures once the texture BA2 format is conquered.

Interestingly, galaxy/star behaviors and biomes are stored as CSV data under data\space\

Arthmoor commented 8 months ago

Face meshes appear to be in meshes\actors\character\facegendata\facegeom\starfield.esm

Which archive are those in? I didn't see them when I was looking.

ElminsterAU commented 8 months ago

Interestingly, galaxy/star behaviors and biomes are stored as CSV data under data\space\

I'm quite sure these are not used. They are probably the data that at some point has been imported into Starfield.esm, but has been changed there since then.

Infernio commented 8 months ago

inf-667-starfield should be able to launch for Starfield now. I can't exactly test that, so some testing from people who have the game would be appreciated.

Infernio commented 8 months ago

Force-pushed the branch. The latest commit on it implements the new Steam detection (and refactors a whole bunch), so Starfield should now get detected automatically without needing to pass -o, edit bash.ini, etc.