Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
34 commits
Select commit Hold shift + click to select a range
6aa6fca
Check icons (#13)
AnakinRaW Feb 3, 2025
30950e2
update dep
AnakinRaW Feb 3, 2025
e87b076
update to net 9.0
AnakinRaW Feb 3, 2025
868f342
rename
AnakinRaW Feb 4, 2025
7cd6411
rename
AnakinRaW Feb 4, 2025
cfb4e17
move
AnakinRaW Feb 4, 2025
7a9abee
new xml parser structure
AnakinRaW Feb 6, 2025
9c71366
use field
AnakinRaW Feb 11, 2025
c77b52b
update deps
AnakinRaW Feb 13, 2025
f27d82f
start implementing command bar
AnakinRaW Feb 15, 2025
111c6c7
polishing
AnakinRaW Feb 16, 2025
8a390cb
initialize command bar
AnakinRaW Feb 19, 2025
1307adc
remove manual settings
AnakinRaW Feb 20, 2025
41e1454
commit
AnakinRaW Feb 22, 2025
00bc840
start implementing PGRender
AnakinRaW Feb 23, 2025
00796d9
implement fontmanager, implement assert reporting, better console output
AnakinRaW Mar 1, 2025
853c6b6
load animations
AnakinRaW Mar 3, 2025
d03bcfc
support model loading
AnakinRaW Mar 3, 2025
6d18591
better error reporting
AnakinRaW Mar 3, 2025
fb6fe1a
reporting
AnakinRaW Mar 3, 2025
27d0b90
nicer reporting
AnakinRaW Mar 4, 2025
ab58593
update deps
AnakinRaW Mar 5, 2025
ea414cc
start creating commandbar verifiers
AnakinRaW Mar 7, 2025
36bfad3
updated reporting and fixes
AnakinRaW Mar 22, 2025
27a9283
reorganize alot of code
AnakinRaW Mar 29, 2025
5d78d2b
update deps
AnakinRaW Mar 29, 2025
ca1dcf7
move pipeline to lib
AnakinRaW Mar 29, 2025
5592790
reorganize modifiers
AnakinRaW Mar 30, 2025
6abb5ab
fix false positive
AnakinRaW Mar 30, 2025
f7053a6
start mod verify reporting
AnakinRaW Mar 31, 2025
76aebc1
status reporting
AnakinRaW Apr 2, 2025
9e08323
release candiate
AnakinRaW Apr 5, 2025
5408ba9
thx copilot :D
AnakinRaW Apr 5, 2025
2a035ff
do not close automatically in interactive mode
AnakinRaW Apr 5, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
23 changes: 20 additions & 3 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,24 @@

version: 2
updates:
- package-ecosystem: "nuget" # See documentation for possible values
directory: "/" # Location of package manifests
- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: "daily"
interval: "daily"
groups:
actions-deps:
patterns:
- "*"
target-branch: "develop"


- package-ecosystem: "nuget"
directory: "/"
schedule:
interval: "daily"
target-branch: "develop"
open-pull-requests-limit: 1
groups:
all-deps:
patterns:
- "*"
8 changes: 4 additions & 4 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ jobs:
- name: Create NetFramework Release
run: dotnet publish .\src\ModVerify.CliApp\ModVerify.CliApp.csproj --configuration Release -f net48 --output ./releases/net48
- name: Create Net Core Release
run: dotnet publish .\src\ModVerify.CliApp\ModVerify.CliApp.csproj --configuration Release -f net8.0 --output ./releases/net8.0
run: dotnet publish .\src\ModVerify.CliApp\ModVerify.CliApp.csproj --configuration Release -f net9.0 --output ./releases/net9.0
- name: Upload a Build Artifact
uses: actions/upload-artifact@v4
with:
Expand All @@ -53,8 +53,8 @@ jobs:
path: ./releases
- name: Create NET Core .zip
# Change into the artifacts directory to avoid including the directory itself in the zip archive
working-directory: ./releases/net8.0
run: zip -r ../ModVerify-Net8.zip .
working-directory: ./releases/net9.0
run: zip -r ../ModVerify-Net9.zip .
- uses: dotnet/nbgv@v0.4.2
id: nbgv
- name: Create GitHub release
Expand All @@ -66,4 +66,4 @@ jobs:
generate_release_notes: true
files: |
./releases/net48/ModVerify.exe
./releases/ModVerify-Net8.zip
./releases/ModVerify-Net9.zip
2 changes: 1 addition & 1 deletion .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,6 @@ jobs:
submodules: recursive
- uses: actions/setup-dotnet@v4
with:
dotnet-version: 8.0.x
dotnet-version: 9.0.x
- name: Build & Test in Release Mode
run: dotnet test --configuration Release
3 changes: 0 additions & 3 deletions .gitmodules

This file was deleted.

57 changes: 50 additions & 7 deletions Directory.Build.props
Original file line number Diff line number Diff line change
@@ -1,9 +1,52 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="Current" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<PackageReference Include="Nerdbank.GitVersioning" Condition="!Exists('packages.config')">
<PrivateAssets>all</PrivateAssets>
<Version>3.6.139</Version>
</PackageReference>
</ItemGroup>
<Project>

<PropertyGroup>
<RepoRootPath>$(MSBuildThisFileDirectory)</RepoRootPath>
<ProduceReferenceAssembly>true</ProduceReferenceAssembly>
<EnableDynamicPlatformResolution>true</EnableDynamicPlatformResolution>
<GitVersionBaseDirectory>$(RepoRootPath)</GitVersionBaseDirectory>
<PackageOutputPath>$(RepoRootPath)bin\Packages\$(Configuration)\</PackageOutputPath>
</PropertyGroup>

<PropertyGroup>
<Product>ModVerify</Product>
<Authors>Alamo Engine Tools and Contributors</Authors>
<Copyright>Copyright © 2025 Alamo Engine Tools and contributors. All rights reserved.</Copyright>
<PackageProjectUrl>https://github.com/AlamoEngine-Tools/ModVerify</PackageProjectUrl>
<LicenseFile>$(RepoRootPath)LICENSE</LicenseFile>
<PackageLicenseExpression>MIT</PackageLicenseExpression>
<RepositoryUrl>https://github.com/AlamoEngine-Tools/ModVerify</RepositoryUrl>
<RepositoryType>git</RepositoryType>
<Company>Alamo Engine Tools</Company>
<PackageReadmeFile>README.md</PackageReadmeFile>
<PackageIcon>aet.png</PackageIcon>
</PropertyGroup>

<PropertyGroup>
<LangVersion>latest</LangVersion>
<ImplicitUsings>disable</ImplicitUsings>
<Nullable>enable</Nullable>
<EnableNETAnalyzers>True</EnableNETAnalyzers>
<AnalysisLevel>latest</AnalysisLevel>
</PropertyGroup>

<ItemGroup>
<PackageReference Update="SauceControl.InheritDoc" Version="2.0.2" />
<PackageReference Include="Microsoft.SourceLink.GitHub" Version="8.0.0">
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
<PrivateAssets>all</PrivateAssets>
</PackageReference>
<PackageReference Include="Nerdbank.GitVersioning" Condition="!Exists('packages.config')">
<PrivateAssets>all</PrivateAssets>
<Version>3.7.115</Version>
</PackageReference>
<None Include="$(MSBuildThisFileDirectory)README.md" Pack="true" PackagePath="" />
</ItemGroup>

<ItemGroup Condition="'$(IsPackable)' == 'true'">
<None Include="$(LicenseFile)" Pack="true" PackagePath=""/>
<None Include="$(RepoRootPath)aet.png" Pack="true" PackagePath=""/>
</ItemGroup>

</Project>
21 changes: 0 additions & 21 deletions ModVerify.sln
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,6 @@ VisualStudioVersion = 17.11.34909.67
MinimumVisualStudioVersion = 10.0.40219.1
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "PetroglyphTools", "PetroglyphTools", "{15F8B753-814A-406E-9147-EB048DADAC96}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "PG.Commons", "PetroglyphTools\PG.Commons\PG.Commons\PG.Commons.csproj", "{1A9E1B15-DD77-47E3-893E-AFADF982CEC6}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "PG.StarWarsGame.Files.DAT", "PetroglyphTools\PG.StarWarsGame.Files.DAT\PG.StarWarsGame.Files.DAT\PG.StarWarsGame.Files.DAT.csproj", "{4630F85C-D1C4-4454-9126-BE13F6901E0B}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "PG.StarWarsGame.Files.MEG", "PetroglyphTools\PG.StarWarsGame.Files.MEG\PG.StarWarsGame.Files.MEG\PG.StarWarsGame.Files.MEG.csproj", "{885291F4-E5E8-45B2-B0B4-40B2910228A3}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ModVerify", "src\ModVerify\ModVerify.csproj", "{22ED0E2C-FF3B-40EB-9CE2-DCDE65CDF31B}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ModVerify.CliApp", "src\ModVerify.CliApp\ModVerify.CliApp.csproj", "{84479931-A329-4113-9BE5-90B71E5486E6}"
Expand All @@ -29,18 +23,6 @@ Global
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{1A9E1B15-DD77-47E3-893E-AFADF982CEC6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{1A9E1B15-DD77-47E3-893E-AFADF982CEC6}.Debug|Any CPU.Build.0 = Debug|Any CPU
{1A9E1B15-DD77-47E3-893E-AFADF982CEC6}.Release|Any CPU.ActiveCfg = Release|Any CPU
{1A9E1B15-DD77-47E3-893E-AFADF982CEC6}.Release|Any CPU.Build.0 = Release|Any CPU
{4630F85C-D1C4-4454-9126-BE13F6901E0B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{4630F85C-D1C4-4454-9126-BE13F6901E0B}.Debug|Any CPU.Build.0 = Debug|Any CPU
{4630F85C-D1C4-4454-9126-BE13F6901E0B}.Release|Any CPU.ActiveCfg = Release|Any CPU
{4630F85C-D1C4-4454-9126-BE13F6901E0B}.Release|Any CPU.Build.0 = Release|Any CPU
{885291F4-E5E8-45B2-B0B4-40B2910228A3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{885291F4-E5E8-45B2-B0B4-40B2910228A3}.Debug|Any CPU.Build.0 = Debug|Any CPU
{885291F4-E5E8-45B2-B0B4-40B2910228A3}.Release|Any CPU.ActiveCfg = Release|Any CPU
{885291F4-E5E8-45B2-B0B4-40B2910228A3}.Release|Any CPU.Build.0 = Release|Any CPU
{22ED0E2C-FF3B-40EB-9CE2-DCDE65CDF31B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{22ED0E2C-FF3B-40EB-9CE2-DCDE65CDF31B}.Debug|Any CPU.Build.0 = Debug|Any CPU
{22ED0E2C-FF3B-40EB-9CE2-DCDE65CDF31B}.Release|Any CPU.ActiveCfg = Release|Any CPU
Expand Down Expand Up @@ -70,9 +52,6 @@ Global
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(NestedProjects) = preSolution
{1A9E1B15-DD77-47E3-893E-AFADF982CEC6} = {15F8B753-814A-406E-9147-EB048DADAC96}
{4630F85C-D1C4-4454-9126-BE13F6901E0B} = {15F8B753-814A-406E-9147-EB048DADAC96}
{885291F4-E5E8-45B2-B0B4-40B2910228A3} = {15F8B753-814A-406E-9147-EB048DADAC96}
{92F2A0C8-61B6-424B-99D5-7898CDBA7CA6} = {15F8B753-814A-406E-9147-EB048DADAC96}
{DF76A383-C94E-4D03-A07C-22D61ED37059} = {15F8B753-814A-406E-9147-EB048DADAC96}
{418C68FA-531B-432E-8459-6433181C8AD3} = {15F8B753-814A-406E-9147-EB048DADAC96}
Expand Down
1 change: 0 additions & 1 deletion PetroglyphTools
Submodule PetroglyphTools deleted from 034767
40 changes: 31 additions & 9 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,13 +1,18 @@
# ModVerify: A Mod Verification Tool

ModVerify is a command-line tool designed to verify mods for the game Star Wars: Empire at War and its expansion Forces of Corruption.
ModVerify is a command-line tool designed to analyze
mods for the game Star Wars: Empire at War and its expansion Forces of Corruption
for common errors in XML and other game files.

## Table of Contents

- [Installation](#installation)
- [Usage](#usage)
- [Options](#options)
- [Available Checks](#available-checks)
- [Creating a new Baseline](#creating-a-new-baseline)

---

## Installation

Expand All @@ -18,15 +23,18 @@ Download the latest release from the [releases page](https://github.com/AlamoEng

You can place the files anywhere on your system, eg. your Desktop. There is no need to place it inside a mod's directory.

*Note: Both versions have the exact same feature set. They just target a different .NET runtime. Linux and CI/CD support is not fully tested yet. Current priority is on the Windows-only version.*
***Note**: Both versions have the exact same feature set. They just target a different .NET runtime. Linux and CI/CD support is not fully tested yet. Current priority is on the Windows-only version.*

---

## Usage

Simply run the executable file `ModVerify.exe`.

When given no specific argument through the command line, the app will ask you which game or mod you want to verify. When the tool is done, it will write the verification results into new files next to the executable.
When given no specific argument through the command line, ModVerify will ask you which game or mod you want to verify. When ModVerify is done analyzing, it will write the verification results into new files next to the executable.

A `.JSON` file lists all found issues. Into seperate `.txt` files the same errors get grouped by a category of the finding. The text files may be easier to read, while the json file is more useful for 3rd party tool processing.
A `.JSON` file contains all identified issues. The additional `.txt` files contain the same errors but are grouped by the verifier that reported the issue.
The text files may be easier to read, while the JSON file is more useful for 3rd party tool processing.

## Options

Expand All @@ -49,8 +57,6 @@ Specified the output path where analysis result shall be written to.
### `--baseline`
Specifies a baseline file that shall be used to filter out known errors. You can download the [FoC baseline](focBaseline.json) which includes all errors produced by the vanilla game.

### `--createBaseline`
If you want to create your own baseline, add this option with a file path such as `myModBaseline.json`.

### Example
This is an example run configuration that analyzes a specific mod, uses a the FoC basline and writes the output into a dedicated directory:
Expand All @@ -59,19 +65,35 @@ This is an example run configuration that analyzes a specific mod, uses a the Fo
ModVerify.exe --path "C:\My Games\FoC\Mods\MyMod" --output "C:\My Games\FoC\Mods\MyMod\verifyResults" --baseline focBaseline.json
```

---

## Available Checks

The following verifiers are currently implemented:

### For SFX Events:
- Checks whether coded preset exists
### SFX Events:
- Checks whether coded presets exist
- Checks the referenced samples for validity (bit rate, sample size, channels, etc.)
- Duplicates

### GUIDialogs
- Checks the referenced textures exist

### For GameObjects
### GameObjects
- Checks the referenced models for validity (textures, particles and shaders)
- Duplicates

### Engine
- Performs assertion checks the Debug builds of the game are also doing (not complete)
- Sports XML errors and unexpected values

---

## Creating a new Baseline

If you want to create your own baseline use the `createBaseline` option.

### Example
```bash
ModVerify.exe createBaseline -o myBaseline.json --path "C:\My Games\FoC\Mods\MyMod"
```
Loading