Skip to content

Repository files navigation

BioRand 7

.NET contributions welcome

drawing


BioRand 7 is a cloud randomizer and mod-generation toolkit for Resident Evil 7 Biohazard based on the BioRand infrastructure.

This repository contains the .NET randomizer library, command-line tools, data-generation utilities, tests, REFramework Lua scripts, and reverse-engineering notes that support it.

BioRand 7 is a fan-made project and is not affiliated with or endorsed by Capcom. You need a legally owned copy of Resident Evil 7 including all DLCs to use game-derived inputs locally.

Status

BioRand 7 is in active beta development. Item, weapon, inventory, recipe, and several progression-safety systems are already implemented; enemy and chapter-related work is still especially sensitive and should be tested carefully.

For current design notes and planned work, see:

Features

Key item rando graph
  • Generates RE7 randomizer output as a patch PAK, Fluffy Mod Manager ZIP, or extracted natives/ folder.
  • Supports seeded generation and JSON configuration profiles.
  • Randomizes items, key item locations, item drops, bird cages, starting inventory, inventory stack limits, and crafting recipes.
  • Emits an offline HTML key-item spoiler with numbered pickup markers on RE7 floor-plan images.
  • Includes weapon stat randomization for damage, ammo capacity, and reload speed.
  • Includes enemy randomization options for enemy classes, multipliers, placement, health, speed, damage, and scale.
  • Adds REFramework artifacts when features require runtime support.
  • Provides standalone mod export commands for bundled optional mods.
  • Uses embedded, spreadsheet-derived, and generated data so behavior can be tested without a local RE7 install.

Requirements

For players, use the Steam Windows RT/DX12 version of RE7 with its DLC installed. The older dx11_non-rt branch is unsupported. The SDK and Git requirements below apply to building the tools yourself.

Installing a generated seed

  1. Close RE7 and back up your saves before changing an installation. Start a new game for a new seed or changed progression settings.
  2. Download the seed's Patch ZIP. It includes all required shared assets. Extract all its contents into the folder containing re7.exe, including both patch PAKs when supplied; placing the ZIP there does not install it. Keep the directory structure, including reframework/autorun/BioRand7.lua, its BioRand7/ modules, and reframework/data/BioRand7/config.json.
  3. When the output includes REFramework scripts, install the RE7 RT version of REFramework so its dinput8.dll sits next to re7.exe. Most randomizer profiles need this runtime, including randomized weapons and extra enemies. The generated ZIP normally supplies the BioRand scripts, not REFramework itself.
  4. Alternatively, enable the Fluffy Mod ZIP in Fluffy Mod Manager. It also includes the shared assets. Follow the same REFramework requirement. Use one installation method and one seed at a time; disable the old Fluffy seed or remove the previously installed BioRand patch PAKs before switching methods.

Older downloads may still list a separate Additional Assets ZIP. Install it alongside an older Patch ZIP or older Fluffy archive that does not include shared assets, or regenerate the seed to get a complete archive. If an installation hangs when entering particular rooms, first check that all files were extracted, the RT/DX12 game version, and that only one BioRand seed is installed. If the hang persists, provide the seed/config, exact room or transition, Fluffy version and Data/Log.txt when applicable, and whether the same seed loads using the Patch installation after disabling the Fluffy mod.

When upgrading, disable the previous Fluffy seed or remove its BioRand patch PAKs, including any separately installed asset PAK. Remove its BioRand Lua entrypoint/module directory before installing the replacement, including when the new profile does not require scripts. Remove any legacy BioRand managed plugin or autorun script from an older C# installation so two runtimes cannot run together; preserve unrelated mods and plugins. Keep the seed's config, logs, build version, and optional spoilers for support.

To uninstall, disable the Fluffy mod or remove all BioRand patch PAKs supplied by the seed, plus reframework/autorun/BioRand7.lua, reframework/autorun/BioRand7/, and reframework/data/BioRand7/. Remove only files installed by BioRand; do not remove vanilla PAKs or another mod's runtime.

Chapter shuffling is unavailable in public profiles until return routes are validated. Old profiles with it enabled are rejected with an explanation. Generation uses the CSV snapshot embedded in the application by default; the advanced spreadsheet-refresh option is for development and can change an existing seed's results.

Developer requirements

  • .NET 10 SDK
  • Git with Git LFS
  • A local Resident Evil 7 install with all DLCs for local setup/mod generation workflows
  • Windows is recommended for game-related workflows

Large embedded assets, including src/Biohazard.BioRand.RE7/_Data/silver_birthday_patches.zip, are stored with Git LFS. Install Git LFS before cloning when possible:

git lfs install

For an existing clone, fetch the LFS payloads before building or running tests:

git lfs pull

Build And Test

From the repository root:

dotnet restore .\biorand-re7.sln
dotnet build .\biorand-re7.sln --no-restore
dotnet test .\biorand-re7.sln --no-build --verbosity normal

The REFramework runtime also has executable Lua tests, independent of the game and baseline PAK:

lua tests/lua/run.lua

CI runs these with Lua 5.4. See REFramework Lua validation for the runtime API rules and in-game checks.

CI tests both Debug and Release. Pushes to master and manually triggered release checks require BIORAND_RE7_TEST_PAK_URL and BIORAND_RE7_TEST_PAK_SHA256; a run without PAK-backed tests is not release validation. Fork pull requests can run the tests that do not need game data.

The CLI's generate -o destination includes its runtime files: .pak writes scripts/config beside the PAK, a directory receives the loose game files and runtime, and .zip writes the Fluffy archive with companion downloads beside it. Logs and spoilers stay with that destination. setup and setup --full both extract the baseline required for generation.

Benchmarks

Randomizer throughput benchmarks live in src/Biohazard.BioRand.RE7.Benchmarks/ and use the embedded baseline PAK, %USERPROFILE%\.biorand\biorand-re7.pak, or a path supplied through BIORAND_RE7_BENCHMARK_PAK.

Run them from the repository root in Release mode:

dotnet run -c Release --project .\src\Biohazard.BioRand.RE7.Benchmarks\Biohazard.BioRand.RE7.Benchmarks.csproj

To run a single scenario:

dotnet run -c Release --project .\src\Biohazard.BioRand.RE7.Benchmarks\Biohazard.BioRand.RE7.Benchmarks.csproj -- --filter *DefaultProfile*

The RealisticProfile scenario uses the checked-in profile under src/Biohazard.BioRand.RE7.Benchmarks/Profiles/. Benchmarks disable dynamic Google Sheets downloads by default; set BIORAND_RE7_BENCHMARK_DOWNLOAD_DATA=1 to include that external fetch cost.

Data Workflows

Some runtime data is embedded under src/Biohazard.BioRand.RE7/_Data/. Changes there affect generated seeds, not only tests.

Refresh dynamic CSV data from the Google Sheets spreadsheets:

dotnet run --project .\src\biorand-re7\biorand-re7.csproj -- update

Run data generators:

dotnet run --project .\src\Biohazard.BioRand.RE7.DataGen\Biohazard.BioRand.RE7.DataGen.csproj -- generate config
dotnet run --project .\src\Biohazard.BioRand.RE7.DataGen\Biohazard.BioRand.RE7.DataGen.csproj -- generate areas item_placements item_definitions weapon_definitions enemies
dotnet run --project .\src\Biohazard.BioRand.RE7.DataGen\Biohazard.BioRand.RE7.DataGen.csproj -- generate area_scene_targets -f Json
dotnet run --project .\src\Biohazard.BioRand.RE7.DataGen\Biohazard.BioRand.RE7.DataGen.csproj -- rsz-to-cs app.TypeName --with-enums

Generated files are written to GeneratedFiles/. Some generators also copy outputs into _Data/. The key item route graph image is refreshed into docs/key_item_route_graph.png when the DataGen project builds.

Repository Layout

src/Biohazard.BioRand.RE7/                    Core randomizer library
src/biorand-re7/                              Command-line app
src/Biohazard.BioRand.RE7.Benchmarks/         BenchmarkDotNet throughput benchmarks
src/Biohazard.BioRand.RE7.DataGen/            Data and code generators
src/Biohazard.BioRand.RE7/_Data/reframework/  REFramework Lua autorun scripts
src/Biohazard.BioRand.RE7.Tests/              xUnit regression tests
docs/                                         Notes, roadmap, and research docs
assets/                                       Project assets and bundled mod assets

Contributing

Contributions are welcome, especially focused bug fixes, tests, documentation, data corrections, and carefully scoped randomizer improvements.

Start with CONTRIBUTING.md. For issues, use the existing GitHub templates and attach the randomizer ZIP output when reporting crashes or softlocks. Do not attach full vanilla game PAKs, game install dumps, local credentials, or private files.

Acknowledgements

BioRand 7 would not be possible without a few amazing people and tools:

License

This project is licensed under the MIT License.

About

A cloud randomizer for Resident Evil 7 Biohazard.

Topics

Resources

Code of conduct

Contributing

Stars

8 stars

Watchers

1 watching

Forks

Used by

Contributors

Languages