Hoe u een oplossingsprobleem in Hard West kunt oplossen

Je hebt een ongebruikelijke monitor en bij deze game werd je blind. Kom binnen… We zullen proberen iets uit te zoeken.

Versie

Op het moment van schrijven, 2024-01-04, de spelversie waarmee ik werk is als volgt:

  • Ingame-label: v1.5
  • Bouw-ID: 2221372 (23 oktober 2017)
  • Depot-ID: 307671 (Hard West Windows 64-bit)
  • Duidelijke identiteitskaart: 4355398337640179647 (22 juni- 2017)

Verdere updates zijn onwaarschijnlijk.

Het probleem

Mensen hebben op forums geklaagd, smeekte de ontwikkelaars om aanpassing van de gebruikersinterface en vooral de lettergrootte toe te staan.

Het probleem treft zowel mensen met gigantische monitoren als mensen met kleine monitoren zoals ik.

De ontwikkelaars blijven vastbesloten om de puinhoop niet op te lossen en stellen voor dat mensen de resolutie verlagen, wat voor mij niet eens een optie is — de game biedt slechts één resolutie die ruim boven mijn moedertaal ligt.

Ze hadden het moeten plaatsen “Full HD (1920×1080) alleen monitoren” in de systeemvereisten.

Sta mij toe het te demonstreren…

De code

Wat we hebben

Om een ​​lang verhaal kort te maken, na inspectie van de code, het lijkt erop dat de ontwikkelaars drie hoofddoelen hadden:

  • Het lijkt erop dat het spel oorspronkelijk voor 1600 is ontwikkeld×900 als het interne lay-outdoel.
  • Het lijkt erop dat ze voor de release besloten om zich op 1920 te richten×1080 en schaal de gebruikersinterface daarnaartoe op.
  • Alle resoluties onder 1280×720 zijn verborgen in de vervolgkeuzelijst met opties.

Deze cijfers zijn hardgecodeerd met inline letterlijke constanten overal in de code.
Een hele afschuwelijke puinhoop.

En het configuratiebestand, terwijl platte tekst, heeft geen optie voor weergaveresolutie, om het nog erger te maken. Het wordt allemaal tijdens de runtime beslist.

Heb een andere monitor die theoretisch perfect in staat is om dit spel weer te geven?
We zullen, Het is rot om jou te zijn. Zien, er bestaat een ingewikkeld evenwicht tussen:

  • Gebruikers toestaan ​​de basisconfiguratie uit te voeren.
  • Safeguarding the numerous FullHD users from accidentally setting a sub-optimal resolution.

The choice is obvious, don’t you agree? How could they risk allowing the normie to ruin their experience of the game? Minorities don’t matter, aan de andere kant. You don’t matter.

What I tried

Not gonna lie, I tried fixing the font scaling and it mostly worked with some minor overflow but otherwise very clearly readable text, yet that introduced a tough to hunt down bug where the text on some of the buttons would vanish entirely. I’ve canned that project for now.

What I did

The least I could do, Echter, is enable all resolutions your video driver exposes to be chosen in settings. That’s what I did and that alleviated the issue just enough to let me bear with the game, even if still squinting a little.

Ik wil deze kleine genade delen met mijn kleine schermbroeders.

Wat ik niet deed

Ik zou een hele BepInEx Harmony injector IL runtime patch extravaganza kunnen doen, maar het is te veel moeite voor een game zonder een echte modding-scène.

Misschien later ombouwen als dat nodig is…

De oplossing

We gaan het spel patchen.

Als je nog steeds niet bekend bent met hoe Unity werkt, de daadwerkelijke uitvoerbare spelcode bevindt zich in een .NET/Mono-assembly op…

SteamLibrarysteamappscommonHardWestHardWest_DataManagedAssembly-CSharp.dll

Terwijl…

SteamLibrarysteamappscommonHardWestHardWest.exe

…is slechts een generiek Unity-opstartprogramma waarbij het pictogram is vervangen.

Op patchen…

Je kunt verschillende benaderingen gebruiken om op mijn stappen terug te keren.

Kies je gif.

In montage

Als je de weg kent in .NET-assemblage, je kunt zoiets als dnSpy gebruiken[github.com] om de…

als (Schermresoluties[i].breedte >= 1280)

…toestand uit…

CFGOptionsPanel#Start

…of stel gewoon de inline letterlijke constante in op 1 als de veiligste optie.

Misschien wel het meest elegant gedaan door setting…

IL_012E: ldc.i4.1

In feite…

In een hex-editor

De minimale bewerking zou het schrijven van slechts twee bytes inhouden:

0x0457AE: 0x17
0x0457B0: 0x00

Dus als u een bestand kunt hex-bewerken, dit is uw beste en eenvoudigste patchmethode.

Met een vooraf gemaakte binaire patch

Dit Xdelta versie 3.0.11 patchbestand, eenmaal toegepast op de originele spelassemblage zal deze veranderen naar de staat die werd bereikt met de hierboven beschreven hex-bewerking.

Natuurlijk zitten er meer metadata in het bestand dan de payload, sheesh…

Maak een back-up van uw assembly door deze te hernoemen naar iets als…

Maak een back-up van uw assembly door deze te hernoemen naar iets als…

Assembly-CSharp.dll.BAK

Breng de pleister aan met enige variatie…

xdelta3.exe -d -s Assembly-CSharp.dll.BAK Assembly-CSharp.dll.xdelta Assembly-CSharp.dll

Adjust the paths to something appropriate. The patch will refuse to apply to the wrong file.

If you’re not comfortable with a terminal, go find a GUI frontend to xdelta.

Perhaps something like Delta Patcher, except this one isn’t a frontend anymore, but a reimplementation in the latter versions. Should probably work as well.

If you somehow manage to lose your original assembly and want it backrun the integrity check in Steam’s game properties.

Deze gids over Het harde westen is geschreven door Gness Erquint. Hiervan kunt u de originele publicatie bezoeken koppeling. Als u zich zorgen maakt over deze gids, aarzel dan niet om ons te bereiken hier.

Over de auteur