-
Notifications
You must be signed in to change notification settings - Fork 53
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #1530 from erri120/docs/1006-installation
Installation docs
- Loading branch information
Showing
9 changed files
with
164 additions
and
172 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,28 @@ | ||
## Code Contributions | ||
|
||
### Prerequisites | ||
|
||
- The latest version of the [.NET SDK](https://dotnet.microsoft.com/en-us/download/dotnet/8.0). | ||
- An IDE: | ||
- [JetBrains Rider](https://www.jetbrains.com/rider/) and the [Avalonia Rider Extension](https://plugins.jetbrains.com/plugin/14839-avaloniarider), | ||
- [Visual Studio](https://visualstudio.microsoft.com/downloads/) and the [Avalonia Visual Studio Extension](https://marketplace.visualstudio.com/items?itemName=AvaloniaTeam.AvaloniaVS). | ||
|
||
There are also some [Item Templates](https://github.com/AvaloniaUI/avalonia-dotnet-templates) for Avalonia that can be very useful to have, | ||
helping you make things like new 'Windows' and 'Controls' easier. | ||
|
||
### Writing code | ||
|
||
Make sure to follow our [Development Guidelines](./development-guidelines/UICodingGuidelines.md). | ||
|
||
## Translations | ||
|
||
Translations are currently handled via the IDE. See [this issue](https://github.com/Nexus-Mods/NexusMods.App/issues/598) for more details. | ||
|
||
## For Package Maintainers | ||
|
||
If you want to create a package for your distribution, here are some helpful tips to get started: | ||
|
||
- If possible, use `nexusmods-app` for the package name. | ||
- We ship a build of `7zz` and use that executable unless you set `NEXUSMODS_APP_USE_SYSTEM_EXTRACTOR=1` when publishing. See [this issue](https://github.com/Nexus-Mods/NexusMods.App/issues/1306#issuecomment-2095755699) for details. | ||
- Set `INSTALLATION_METHOD_PACKAGE_MANAGER` when publishing. We have an integrated updater that will notify users about new versions. If you set this flag, we'll tell the user to update with their package manager. | ||
- Let us know if you have questions or if you published a new package by joining our [Discord](https://discord.gg/ReWTxb93jS). |
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,78 @@ | ||
One of the biggest complaints from users over the years about modding is that they can't mod with confidence. | ||
|
||
- Will a new mod wreck my installation? | ||
- Will I need to delete my game to revert a mod installation? | ||
- The game updated, my mods updated, and now everything's broken. | ||
|
||
Every step of the ***classic modding approach*** is fraught with pitfalls and destructive changes. | ||
|
||
The Nexus Mods App intends to solve these problems. In addition to being a great mod installer, manager and builder, | ||
this project aims to always provide an *undo* feature for users. Not just on a metadata level (like most mod managers | ||
offer today) but on a per-file basis as well. | ||
|
||
Go ahead and update that mod; if you don't like it, you can always go back to the game as it was before you made the update. | ||
|
||
Concept: [Immutable Mod Lists][immutable-mod-lists] | ||
|
||
### Simple Data | ||
|
||
Most *Mod Managers* have serious drawbacks and edge cases in how they manage files (data). | ||
|
||
They start with a goal of keeping the game folder clean, through the use of techniques such as Symbolic Links, | ||
Hard Links and VFS Systems. | ||
|
||
!!! warning "Unfortunately, most modding frameworks aren't designed with these systems in mind." | ||
|
||
As a result, concepts foreign to end users (VFS, Symlinks) are forced upon them, and the [incidental complexity][incidental-complexity] | ||
of these systems often leak through the mod manager abstractions in unexpected ways. | ||
|
||
#### For Example | ||
|
||
Symlinks & Hardlinks: | ||
|
||
* How do you know if your game works correctly with Symlinks? | ||
* For Hardlinks, your mod files *must be on the same drive* as your game. | ||
* Links can have strange side-effects when files are modified, depending if the file was direct modified or deleted-created-modified. | ||
|
||
Virtual FileSystems: | ||
|
||
* You have to run xEdit through [Mod Organizer 2][mod-organizer-2] for it to see your mod list (Bethesda Games) | ||
* Files end up in a different place from where the end user expects them. | ||
|
||
#### Nexus Mods App Approach | ||
|
||
!!! nexus "The Nexus Mods App aims to merge the mental simplicity of manual modding with the hygiene of existing mod installers and a promise that "you can always go back to what last worked"" | ||
|
||
The 'Data Model' of the Nexus Mods App can be thought of as an extension of lessons learned from the development of | ||
Nexus Collections and Wabbajack. | ||
|
||
When you make a mod list, we don't directly manipulate files. Instead, we manipulate the 'instructions' used to deploy | ||
the mods to the folder, and clicking 'Apply' simply moves the files directly to the folder. | ||
|
||
We do this in a way that allows the user to revert changes at any time. Files aren't 'linked' or 'staged' in any way; | ||
no functions are hooked, and the [cognitive overhead][cognitive-overhead] of the modding process is greatly reduced. | ||
|
||
Instead, users can focus on creating a perfect modding setup that works for them. | ||
|
||
Further Reading: [Comparison of File Management Systems][comparison-fms] | ||
|
||
[al12]: https://github.com/Al12rs | ||
[clojure]: https://clojure.org/ | ||
[cognitive-overhead]: https://techcrunch.com/2013/04/20/cognitive-overhead/ | ||
[comparison-fms]: misc/ComparisonOfFileManagementSystems.md | ||
[erri120]: https://github.com/erri120 | ||
[flaws]: misc/DrawbacksOfNexusApproach.md | ||
[gamefinder]: https://github.com/erri120/GameFinder | ||
[halgari]: https://github.com/halgari | ||
[immutable-mod-lists]: concepts/0000-immutable-modlists.md | ||
[incidental-complexity]: https://dev.to/alexbunardzic/software-complexity-essential-accidental-and-incidental-3i4d | ||
[mod-organizer-2]: https://www.modorganizer.org/ | ||
[mutagen]: https://mutagen-modding.github.io/Mutagen/ | ||
[nagev]: https://github.com/IDCs | ||
[nexus-premium]: https://next.nexusmods.com/premium | ||
[reloaded-ii]: https://reloaded-project.github.io/Reloaded-II/ | ||
[sewer56]: https://github.com/Sewer56 | ||
[simon]: https://github.com/insomnious | ||
[tannin]: https://github.com/TanninOne | ||
[vortex]: https://www.nexusmods.com/about/vortex/ | ||
[wabbajack]: https://www.wabbajack.org/ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.