[skip ci] update documentation

This commit is contained in:
ds5678 2025-05-26 12:13:06 -07:00
parent c1a67f1551
commit d544e23b5d
10 changed files with 43 additions and 17 deletions

View File

@ -6,7 +6,7 @@ body:
- type: markdown
attributes:
value: |
Thanks for submitting a bug report, please fill out as much detail as possible.
Thank you for submitting a bug report; please fill in with as much detail as possible.
- type: dropdown
id: assetripper_version
attributes:
@ -16,7 +16,7 @@ body:
- No, I need to download a newer version and try again.
- Yes, I'm on the latest release of AssetRipper.
- Yes, I'm on the latest pre-release of AssetRipper.
- Yes, I'm on the latest alpha-build of AssetRipper.
- Yes, I'm on the latest nightly build of AssetRipper.
validations:
required: true
- type: dropdown
@ -51,12 +51,12 @@ body:
- type: dropdown
id: game_backend
attributes:
label: Is the game Mono or IL2Cpp?
description: Desktop IL2Cpp games have a GameAssembly.dll in the same directory as the game executable file. Android IL2Cpp games have a libil2cpp.so file in the lib directory (or one of its subdirectories).
label: Is the game Mono or Il2Cpp?
description: Desktop Il2Cpp games have a GameAssembly.dll in the same directory as the game executable file. Android Il2Cpp games have a libil2cpp.so file in the lib directory (or one of its subdirectories).
options:
- Unknown
- Mono
- IL2Cpp
- Il2Cpp
- Not Applicable
validations:
required: true
@ -73,6 +73,6 @@ body:
attributes:
label: Relevant log output
description: |
Please drag and drop your relevant `AssetRipper.log` here. It is located in the same folder as the `exe` file. A screenshot is not normally sufficient because it is often hard to read and search.
Please drag and drop your relevant `AssetRipper.log` here. It is located in the same folder as the `exe` file. A screenshot is not normally sufficient because they are often hard to read and search.
validations:
required: false

View File

@ -6,7 +6,7 @@ body:
- type: markdown
attributes:
value: |
Thanks for taking the time to discuss AssetRipper, please provide as much detail as possible.
Thank you for taking the time to discuss AssetRipper; please provide as much detail as possible.
- type: textarea
id: description
attributes:

View File

@ -16,7 +16,16 @@ namespace AssetRipper.Processing.Assemblies;
/// </remarks>
public sealed class AttributePolyfillGenerator : IAssetProcessor
{
/// <summary>
/// Injects generated attribute polyfills into the loaded game data.
/// </summary>
/// <param name="gameData">The loaded game data.</param>
public void Process(GameData gameData) => Process(gameData.AssemblyManager);
/// <summary>
/// Generates attribute polyfills for the given assembly manager.
/// </summary>
/// <param name="manager">The assembly manager to modify.</param>
private static void Process(IAssemblyManager manager)
{
ModuleDefinition? mscorlib = manager.Mscorlib?.ManifestModule;
@ -39,12 +48,20 @@ public sealed class AttributePolyfillGenerator : IAssetProcessor
}
}
/// <summary>
/// Custom reference importer for cloning. It handles redirects references from the source module to the target module.
/// </summary>
private sealed class CustomCloneReferenceImporter : CloneContextAwareReferenceImporter
{
/// <summary>
/// Initializes a new instance of the <see cref="CustomCloneReferenceImporter"/> class.
/// </summary>
/// <param name="context">The cloning context.</param>
public CustomCloneReferenceImporter(MemberCloneContext context) : base(context)
{
}
/// <inheritdoc/>
protected override ITypeDefOrRef ImportType(TypeDefinition type)
{
if (type.DeclaringType is null && TargetModule.TryGetTopLevelType(type.Namespace, type.Name, out TypeDefinition? typeDefinition))
@ -54,6 +71,7 @@ public sealed class AttributePolyfillGenerator : IAssetProcessor
return base.ImportType(type);
}
/// <inheritdoc/>
protected override ITypeDefOrRef ImportType(TypeReference type)
{
if (SignatureComparer.Default.Equals(type.Scope, TargetModule) &&

View File

@ -2,8 +2,15 @@
namespace AssetRipper.Processing.Assemblies;
/// <summary>
/// This class provides the polyfill module used in the <see cref="AttributePolyfillGenerator"/>.
/// </summary>
internal static partial class EmbeddedAssembly
{
/// <summary>
/// Loads a module definition from the embedded byte array.
/// </summary>
/// <returns>The loaded module definition.</returns>
public static ModuleDefinition Load()
{
return ModuleDefinition.FromBytes(Bytes);

View File

@ -1,6 +1,4 @@
using AssetRipper.Import.Logging;
using AssetRipper.IO.Files;
using AssetRipper.Primitives;
namespace AssetRipper.Processing.AudioMixers;

View File

@ -15,6 +15,6 @@ All the MonoBehaviours have a standard fileID, ie 114 followed by 15 random digi
Without the `VisualEffectResource`, errors are thrown when adding a visual effect to a scene.
```
```text
NullReferenceException: VFX resource does not exist for this asset at path:
```
```

View File

@ -22,7 +22,7 @@ If it didn't work, there will be this line:
Import : Files use the 'Unknown' scripting backend.
```
For IL2Cpp games, use [Cpp2IL](https://github.com/SamboyCoding/Cpp2IL) to generate assemblies. [Unhollowed assemblies](https://github.com/knah/Il2CppAssemblyUnhollower) used in modding will not work.
For IL2Cpp games, use [Cpp2IL](https://github.com/SamboyCoding/Cpp2IL) to generate assemblies. [Il2CppInterop assemblies](https://github.com/BepInEx/Il2CppInterop) used in modding will not work.
## Duplicate Assemblies
@ -34,7 +34,7 @@ It is almost always caused by having two assemblies with the same name in the Ma
## Modified Assemblies
> This can include publicized assemblies and/or unhollowed assemblies.
> This can include publicized assemblies and/or Il2CppInterop assemblies.
Modified assemblies almost always cause read errors when used in AssetRipper. Here are some common changes that are known to cause lots of problems:
* Publicizing an assembly changes field deserialization on Monobehaviours.

View File

@ -21,9 +21,9 @@ Pre-releases showcase experimental features and are available in the [releases s
⚠️ These versions may be unstable and are recommended for testing purposes only.
## Alpha Builds [![Build Status](https://img.shields.io/github/workflow/status/AssetRipper/AssetRipper/Publish/master?label=Build%20Status&style=flat-square)](https://nightly.link/AssetRipper/AssetRipper/workflows/publish/master)
## Nightly Builds [![Build Status](https://img.shields.io/github/workflow/status/AssetRipper/AssetRipper/Publish/master?label=Build%20Status&style=flat-square)](https://nightly.link/AssetRipper/AssetRipper/workflows/publish/master)
For advanced users, every commit triggers an automatic alpha build via Github Actions:
For advanced users, every commit triggers an automatic nightly build via Github Actions:
| Platform | Download Link |
|---------------|-------------------------------------------------------------------------------------------------------------|

View File

@ -7,7 +7,7 @@ To build AssetRipper from source, you'll need:
### Essential Software
- [.NET 9 SDK](https://dotnet.microsoft.com/download/dotnet/9.0)
### Compatible IDEs/Editors (with C# 13 support)
### Compatible IDEs/Editors (with C# 14 support)
Choose one of the following:
- [Visual Studio 2022](https://visualstudio.microsoft.com/downloads/) (Community edition is free for open-source development)
- [Visual Studio Code](https://code.visualstudio.com/Download) with C# extension
@ -22,3 +22,7 @@ if you want to run binary files, you need to install:
- ⚠️ Important: Your Unity editor version should be:
- At least as recent as the game version you're working with
- Ideally, use the exact same version as the target game for best compatibility
### libwebkit2gtk
On Linux, `libwebkit2gtk` 4.1 or later is required.

View File

@ -21,7 +21,6 @@
### 1.4 Remove Native Dependencies
- Replace crunch with managed code
- Implement support for decoding Bc textures with managed code for non-multiples of 4
---