Skip to content

Commit 3b80095

Browse files
committed
Bumped: Project Version
1 parent 75607fa commit 3b80095

File tree

3 files changed

+63
-189
lines changed

3 files changed

+63
-189
lines changed

changelog-template.hbs

Lines changed: 61 additions & 187 deletions
Original file line numberDiff line numberDiff line change
@@ -1,226 +1,100 @@
1-
## Changelog (1.26.2)
1+
## Changelog (1.27.0)
22

3-
- Fixed: Automated Builds not including new language options.
4-
- Added: Logging mod install location in loader.
5-
- We're logging this so it's easier to detect the 'user installed source code, not the mod' scenario.
3+
[Read and Discuss in a Browser](https://github.com/Reloaded-Project/Reloaded-II/discussions/347).
4+
[Previous Changelog](https://github.com/Reloaded-Project/Reloaded-II/releases/tag/1.26.2).
65

7-
## Changelog (1.26.1)
6+
This is a longer 'Progress Report' kind of post. Consider reading in a browser.
87

9-
- Microsoft Store unprotecting no longer uses PowerShell.
10-
- We now use internal Windows COM interfaces.
11-
- Improves reliability where access to script running in PowerShell is restricted out of the box. (Admin setting, etc.)
12-
- This may more likely break with future Windows versions.
13-
- However updating the code be very easy (~10 mins) should it come to that.
8+
## Dependency Resolution Update
149

15-
- ASI Loader deployment now places `Reloaded.Mod.Bootstrapper.asi` in game folder, instead of `scripts` subfolder.
16-
- Makes uninstall easier for end users.
10+
This update is focused on more reliable resolution of missing dependencies, notably, reducing the amount of time that the following message is seen:
1711

18-
- Changed: Persona 4 Golden (MS Store) now aliases to Persona 4 Golden (Steam).
19-
- The devs used a different EXE name, which resulted in a different `AppId`, despite being the same game.
20-
- This meant end users won't see downloaded mods easily.
21-
- So an alias directly inside the code was added.
12+
![311567942-ab36118e-8a0b-40f3-a0d5-db3490a247f3](https://github.com/Reloaded-Project/Reloaded-II/assets/6697380/c75aa428-d579-46f1-b18f-c7fc3505b364)
2213

23-
## Changelog (1.26.0)
14+
**A fix for end users:**
15+
- Launching Reloaded without Internet after a mod download will no longer render missing dependencies undownloadable.
16+
- We now ensure we don't remove unused dependency metadata if we're missing dependencies.
17+
- Fixed a very rare edge where it was technically possible the launcher incorrectly reports a missing dependency.
18+
- This would happen if a mod had multiple download locations (e.g. GameBanana+GitHub), but was removed from 1 location.
2419

25-
1.26.0 is a small feature update, bringing small features and bugfixes intended to make Reloaded-II
26-
better work 'out of the box' for various different kinds of users. (i.e. Reliability)
20+
**A fix for mod authors:**
21+
- A launcher restart is no longer required to update mod dependency info.
22+
- This info is what's used to download missing dependencies.
23+
- *You can now safely add/edit a mod in launcher, set dependency, add some files and publish*.
24+
- Previously a launcher restart was required to ensure dependency info was embedded in your mod.
25+
- We now update the dependency data before publish, ensuring mod authors don't pack mod with missing dependencies.
26+
27+
**An Automated Error Handler for Edge Cases:**
28+
- We now use the [Search Index](https://github.com/Reloaded-Project/Reloaded-II.Index) as a fallback, if all else fails.
29+
- The search index is what normally makes your mod searches in App super fast.
30+
- But it also knows the unique `ModId` of each uploaded mod.
31+
- So we can use this to find missing mods.
32+
- This currently works for 11 games that use Reloaded-II on GameBanana (I don't index any other sites currently).
33+
- Enabling this has some security implications. This is only used as a last resort fallback, when all else fails.
2734

28-
Through most of its life, Reloaded-II has been a 'solo' project, so this update focuses on making R2
29-
last just a little bit longer while I spend the next ~2 years working on Reloaded3.
35+
This should hopefully help in getting cases where users experience missing dependencies closer to 0.
36+
***Especially*** in situations where a dependency is hosted only in 1 location, e.g. `Only <This Mod Site>`
3037

31-
Below is a small 'Progress Report'.
32-
Community contributions are always welcome, and as usual, thanks for using this software.
38+
## Updated Docs
3339

34-
### Win32 Microsoft Store (i.e. GamePass) Games should now work 'Out of the Box'
40+
Documentation and in-launcher tutorial has been updated to feature installing via drag-and-drop as a method of installation.
3541

36-
In short: They should be as simple to set up as games on other launchers.
37-
(If you're interested in the details, read on, otherwise skip.)
42+
![image](https://github.com/Reloaded-Project/Reloaded-II/assets/6697380/d2834ba8-9a6b-43d0-aff8-f067007358c8)
3843

39-
For a very long time, GamePass games have been a pain to set up.
44+
(Hint: It's animated in the launcher)
4045

41-
Due to Copy Protection (DRM) that Microsoft employs at the Operating System level,
42-
you're not allowed to read all of the game files, even if you 'own' the game.
46+
## Infrastructure Update
4347

44-
This is problematic, because:
45-
- We can't inject code into game directly, as it needs to be started via `gamelaunchhelper.exe`.
46-
- So you can have working cloud saves, etc.
47-
- We can't install a shim (e.g. ASI Loader), because we can't read the EXE files.
48-
- They're encrypted on disk, and only decrypted when the game is ran.
49-
- So we can't figure out how to install a shim.
48+
The open [1st party package server](http://packages.sewer56.moe:5000/about) is an unsung hero ensuring your modding experience is as smooth as possible. This is the place where ***critical*** code mods are fetched from automatically when the primary source (like GitHub) hits its limits - a common scenario given GitHub's restrictions of 60 requests per hour per IP.
5049

51-
Unfortunately, as a result, this meant that we just had to say 'figure it out yourself' for a while.
52-
As Reloaded-II has historically mostly been a solo effort, and I don't use Windows outside of debugging mods,
53-
I've never really had opportunities to investigate further.
50+
Given Reloaded's modular nature, you'll typically hit that limit restarting the launcher around 4 times. Now imagine you have a family, or are in a hotel room, or just troubleshooting, this limit may already be exhausted. Now you download a new mod, which requires some framework/critical component and suddenly you're told...
5451

55-
That was until @Aemony gave me a hint by linking the [following post](https://github.com/ianpatt/sfse/issues/10#issuecomment-1732552638).
52+
![311567942-ab36118e-8a0b-40f3-a0d5-db3490a247f3](https://github.com/Reloaded-Project/Reloaded-II/assets/6697380/c75aa428-d579-46f1-b18f-c7fc3505b364)
5653

57-
So I bought GamePass from my own pocket, and started investigating.
58-
Turns out that if you spawn a process in the 'AppX' context of the game via [Invoke-CommandInDesktopPackage](https://learn.microsoft.com/en-us/powershell/module/appx/invoke-commandindesktoppackage?view=windowsserver2022-ps),
59-
or via `IDesktopAppxActivator` COM interface, you can read the normally encrypted files just fine.
54+
Not ideal.
6055

61-
With that in mind, I've written some code to dump unencrypted game files, and then replace the originals
62-
with them, so Reloaded-II can work as expected. The process is multi step, and error prone to some
63-
degree, however all games on GamePass that are frequently used with Reloaded seem to work just fine for now.
64-
[Source Code](https://github.com/Reloaded-Project/Reloaded-II/blob/master/source/Reloaded.Mod.Launcher.Lib/Utility/TryUnprotectGamePassGame.cs). The code I wrote should work on Win10 21H2 and above, no guarantees for older
65-
Windows builds.
56+
With the surge of users, traffic on this server has risen drastically. In the past 20 days we have ***transferred 6TB of data***. Month started with approximately 5MB/s and is now 7.5MB/s. This is especially surprising, as the critical code mods stored here are typically under 0.5MB in size.
6657

67-
An additional set of patches were made to ensure:
68-
- GamePass games survive 'Verify Game Files' functionality.
69-
- GamePass games survive updates (hopefully).
70-
- Note: GamePass games can change their *real* EXE location (not the fake one in your game folder) after an update.
71-
- If this happens Reloaded-II should still work now.
58+
![pulse-browser_Qw41LjD9KC](https://github.com/Reloaded-Project/Reloaded-II/assets/6697380/f118f2fe-4eed-4ce4-9422-9660681bdaa0)
7259

73-
When finding a GamePass game, Reloaded-II will now auto-unprotect it for you, and install ASI Loader.
74-
When you launch from the launcher, it'll boot `gamelaunchhelper.exe`, to ensure your cloud saves work,
75-
and the ASI Loader shim will handle loading Reloaded itself when the actual game boots.
60+
![pulse-browser_7lQjhXQXIB](https://github.com/Reloaded-Project/Reloaded-II/assets/6697380/1102d5fe-e625-4175-a2c0-b1dc1b9c2129)
7661

77-
Things should hopefully work 'just fine', for now.
62+
I only found out a few days ago, as I was looking into why the server was unresponsive. Sometimes queries randomly took ~2-3 seconds to respond, and I was rather flabbergasted.
7863

79-
PS. If you're unfortunate enough to have a Denuvo game on GamePass, your game start times should
80-
now be ~3 seconds faster on a typical PC. You're welcome. Unfortunately, this is just another
81-
case of how anti-piracy tech unfortunately always hurts the paying customer the most.
64+
The Package server runs on a *very minimal-effort* fork of [BaGet](https://github.com/loic-sharma/BaGet/), renamed as [BaGet-Reloaded](https://github.com/Sewer56/BaGet-ReloadedII) to avoid confusion with the original project. Using the Sqlite3 backend.
8265

83-
### Mod Subfolders
66+
To the best of my knowledge, the delays in responses were caused by a combination of:
67+
- A lot of writes to the DB, which blocks reads in Sqlite out of the box.
68+
- Notably, BaGet increments the 'download count' every time a package is returned via search.
69+
- Sustained load on a shared CPU (a.k.a. 'vCPU'). [to a very, very small extent]
8470

85-
(Originally contributed by @ItsKaa, thanks!)
71+
I changed the settings on Sqlite3 to use [WAL](https://www.sqlite.org/wal.html) and `synchronous=NORMAL`. This allows us to perform reads during writes, thus fixing up the performance. In addition, I bumped the server specs a bit, just in case the load continues to climb. Currently the server is completely responsive again.
8672

87-
You can now store mods in subfolders of Mods folder.
73+
### A Thank You
8874

89-
Example `Reloaded-II/Mods` folder:
90-
```
91-
Mods
92-
├── FlatOut
93-
│ ├── flatout2.packs.goofyahhmod
94-
│ ├── flatout2.utils.modloader
95-
│ ├── flatout2.utils.mpnamechange
96-
│ ├── flatout2.utils.richpresence
97-
│ └── flatout2.utils.zpatch
98-
├── <other unrelated mod 1>
99-
├── <other unrelated mod 2>
100-
└── <other unrelated mod 3>
101-
```
75+
Services like the `Package Server` are supported by your donations.
76+
They also help cover occasional game purchases.
77+
Recent Example: [Fixing Compatibility with Special K in presence of Steam Copy Protection/DRM](https://github.com/Reloaded-Project/Reloaded-II/issues/308#issuecomment-1973715264) for games like Granblue Relink
10278

103-
![Image](./Subfolders.png)
79+
In the ~4 years I've been accepting donations so far, I've received a total of ***£358.87 (and 4 games)***. This has helped cover most of the costs involved. e.g. Package Server, Server Backups, Discord Bot(s), Search Index, Services for some Online Mods, Domain (Website Name) Costs etc.
10480

105-
If you're a fan of manual mod organization, say in the style of Stardew Valley, this is for you.
106-
Should make you feel more at home.
81+
With these donations I can almost break even. I don't have any concrete numbers (hard to calculate), but based on some quick maths, I've probably spent around £450-500 on Reloaded related things so far.
10782

108-
### Preserve Mod Order
83+
Thank you.
10984

110-
(Contributed by @ItsKaa, thanks!)
85+
### About the Future
11186

112-
The order of mods in the launcher is now fully preserved across restarts.
113-
Previously, the enabled mods would show first in load order, and disabled ones would show after
114-
in alphabetical order.
87+
Please remember. For most of its life, Reloaded has been a solo project.
88+
Not just the Manager, but the Loader and many of the core components used across your popular mods.
11589

116-
For newly added games, this is now the default (may change depending on feedback). For games
117-
people previously added before this update, this is opt-in.
90+
In any case, the work on the successor continues, albeit slowly.
11891

119-
![Image](./PreserveModOrder.png)
92+
Every week, I spend around 24-30 hours on Reloaded things, ***on top of my fulltime job***. Hopefully in 2 years, we'll live in a future where users can start experimenting with porting core components from Reloaded-II to Reloaded3. This is not easy to do, but I will relentlessly keep going, until it is done.
12093

121-
In either case, you can change this setting at any time according to your preference.
94+
The intent of the recent reliability/bug-fix patches is to allow me to step back from maintaining Reloaded-II for a longer time and let me focus on the successor.
12295

123-
### Reloaded-II now defaults to DLL Hijacking as opposed to DLL Injection
96+
If you are a programmer, I should hopefully have a ['Specification'](https://reloaded-project.github.io/Reloaded-III/) ready not too long from now. The work on this is resuming today, after a long hiatus, so various core parts of Reloaded3 will be open to community contributions. Until then, hang tight.
12497

125-
i.e. Reloaded-II now uses ASI Loader by default, instead of DLL Injection for newly added games.
126-
127-
Many Steam users have been reporting that ***their Steam clients render their controllers absolutely
128-
unusable for anything that wasn't launched by Steam***. Unfortunately, I don't think this will be
129-
fixed any time soon either.
130-
131-
In order to reduce tech support requests of `I launched via Reloaded and my controller doesn't work`,
132-
I decided to (unfortunately) bend over to Valve and make using a shim for launching Reloaded's
133-
Loader the default.
134-
135-
Although I ***really, really, really*** don't like modifying game folders (they should be untouched!!),
136-
I'm unfortunately forced to make this change to avoid end user issues.
137-
138-
### Improving 'Missing Dependencies' Experience
139-
140-
![Image](./RequiredMod.png)
141-
142-
In some rare cases, mods which depend on other mods don't have the required update information to
143-
download the other mod.
144-
145-
As Reloaded doesn't have a central package server, we copy the update info of each dependency into
146-
each mod that depends on it. That update info is then used to download the needed dependencies in
147-
lieu of a lack of a central package server. Reloaded updates this info on every reboot of the launcher.
148-
149-
In some cases, a modder may for example, forget to add update info to their mod, and some other mod
150-
may set a dependency on it. Or the author of the mod that depends on it may have added the dependency
151-
with a text editor, before hitting 'Publish'. In both these cases, the update info may be missing,
152-
and dependency cannot be auto downloaded.
153-
154-
In this Release, 2 changes have been made to improve this experience:
155-
- Hitting 'Publish' triggers the action to copy dependency info.
156-
- Missing Dependency Dialog shows which mod's dependency is missing.
157-
158-
With these two changes, the likelyhood of a missing dependency error is reduced. And if it occurs,
159-
it's easy to figure out which package was incorrectly uploaded/packaged or is missing update info.
160-
161-
### Automatic Language Selection on First Boot
162-
163-
![Image](./DefaultLanguage.png)
164-
165-
Bing Chilling!
166-
167-
This is very long overdue, and a simple change. When you first boot Reloaded-II, it'll
168-
auto select the language for you. So if your system display language is 中文(简体), Reloaded
169-
will auto select `zh-CN.xaml` on first boot.
170-
171-
### Drag & Drop Mod Installation
172-
173-
![Image](./DragDrop.png)
174-
175-
Mods can now be installed by dragging them over the Reloaded-II window.
176-
177-
This is intended to make mod installation easier in the cases where you're downloading a mod from
178-
a place that doesn't provide you a '1 click install' button. (e.g. GitHub, Nexus, that certain
179-
kinky mod site etc.)
180-
181-
### Loader Logging Change
182-
183-
A small change to how the loader logs mods that are about to be loaded.
184-
185-
Old logs:
186-
```
187-
[Reloaded] Loaded: FlatOut2.Utils.ModLoader in 118ms
188-
[Reloaded] Loaded: FlatOut2.Utils.RichPresence in 9ms
189-
[Reloaded] Loaded: FlatOut2.Utils.ZPatch in 3ms
190-
```
191-
192-
New logs:
193-
```
194-
[Reloaded] Loading 3 Mod(s).
195-
[Reloaded]
196-
[Reloaded] Loading: FlatOut 2 Mod Loader
197-
[Reloaded] - AppId : FlatOut2.Utils.ModLoader
198-
[Reloaded] - LoadTime: 112ms
199-
[Reloaded]
200-
[Reloaded] Loading: FlatOut 2 Discord Rich Presence
201-
[Reloaded] - AppId : FlatOut2.Utils.RichPresence
202-
[Reloaded] - LoadTime: 9ms
203-
[Reloaded]
204-
[Reloaded] Loading: ZPatch
205-
[Reloaded] - AppId : FlatOut2.Utils.ZPatch
206-
[Reloaded] - LoadTime: 3ms
207-
```
208-
Although more verbose, this change should make it easier for troubleshooting.
209-
You can identify if a mod is stuck/deadlocked by the fact `LoadTime` doesn't appear.
210-
And you can more easily match up mod IDs to user friendly mod names.
211-
212-
### Miscellaneous Changes
213-
- Loader and Launcher now filter out duplicate mods (in a predictable manner).
214-
- Updated translations.
215-
- Loader saves ~150KB of RAM again, with trimming re-enabled.
216-
217-
### Bug Fixes
218-
- Added a minimum height in mod update dialog.
219-
- Fixed a bug where updating multiple outdated copies of the same mod at once would cause the launcher to crash.
220-
- Added an explicit full config refresh during dependency resolution.
221-
- Should make the 'Download Loop' issue less common on networked drives, maybe even OneDrive.
222-
223-
End of human written changelog.
22498
------------------------------------
22599
226100
## Complete Changes (Autogenerated)

source/Reloaded.Mod.Launcher/Reloaded.Mod.Launcher.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
<UseWPF>true</UseWPF>
88
<AssemblyName>Reloaded-II</AssemblyName>
99
<RootNamespace>Reloaded.Mod.Launcher</RootNamespace>
10-
<Version>1.26.2</Version>
10+
<Version>1.27.0</Version>
1111
<Copyright>Sewer56 ~ $([System.DateTime]::UtcNow.ToString("s")) | $(Version)</Copyright>
1212
<AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>
1313
<ApplicationIcon>appicon.ico</ApplicationIcon>

source/Reloaded.Mod.Loader/Reloaded.Mod.Loader.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
1212
<TreatWarningsAsErrors>false</TreatWarningsAsErrors>
1313
<NoWarn>$(NoWarn);NU1605;NU1701</NoWarn>
14-
<Version>1.26.2</Version>
14+
<Version>1.27.0</Version>
1515
<Platforms>x86;x64</Platforms>
1616
<GenerateDepsJson>false</GenerateDepsJson>
1717
<DebugType>portable</DebugType>

0 commit comments

Comments
 (0)