Giter Site home page Giter Site logo

andrew0030 / bg3-modders-multitool Goto Github PK

View Code? Open in Web Editor NEW

This project forked from shinyhobo/bg3-modders-multitool

0.0 0.0 0.0 4.47 MB

Utility for quickly generating Baldur's Gate 3 mod packs from an unpacked workspace (among other things).

C# 99.39% Batchfile 0.61%

bg3-modders-multitool's Introduction

BG3 Modder's Multitool

Utility for quickly generating Baldur's Gate 3 mod packs from an unpacked workspace.

Features

  • Automatically paks, zips, and generates metadata
  • Automatically converts files named like example.lsf.lsx and example.lsb.lsx to example.lsf and example.lsb, respectively. This means you no longer have to manually convert files and then copy them into their respective directories.
  • Supports dependencies and multipaks (multiple mods in the same workspace, and multiple workspaces)
  • Utility for extracting some/all game assets at once. It can take more than an hour for the complete set, but will place all the extracted files in a folder in the same directory as the application
  • Unpacked file indexer
  • Index search functionality
  • File previews
  • Open (and automatically convert) files from index searcher
  • UUID and TranslatedString handle generator
  • Launch game directly
  • GameObject Explorer (stats, attributes, icon, model, and model files)
  • Mass LSX converter
  • Colada model conversion
  • .wem => .ogg file conversion and playback

Main window

Indexing/Searching

By clicking on the "Index" button, you will be able to create an index of all unpacked .pak files you have in your UnpackedData directory. Double-click the Index button to begin indexing. After indexing, open an Index Search window, type your keywords into the search bar, and hit Enter (or "Search Files") to get results within a matter of seconds. Double click a listing to open it; hover for a file preview (matching lines only).

Indexing and searching, multiple simultaneous windows possible

Don't hit the "Index Files" button more than once unless you want to reset your index and start from scratch. The old index has to be completely deleted to generate a new one. Unpacking all files and indexing them should result in an index around 450 MB, and will take roughly 10 minutes to generate. Audio, video, image, and model files do not have their contents indexed, only their file names.

GameObject Exploration

Clicking the GameObject Explorer button will open a new window allowing to look at GameObjects such as characters and weapons in a more human friendly manner. As long as you have the necessary game .paks unpacked, it will automatically generate connections between things such as stats, icons, and translations in a hierarchal format. It is possible to search for GameObjects on multiple fields as well as within individual objects through the Stats tab property grid.

In order to use this feature, ensure that you have followed the following steps:

  1. Unpack at least the English, Gustav, Icons, Models, Shared, and Textures paks (wait for all console windows to close and completion message to show before continuing)
  2. Decompress (DO NOT DELETE .lsf FILES)
  3. Index
  4. GameObject Explorer (will take 20+ minutes to organize gameobjects and build a cache)

If you don't follow the above steps exactly, it will generate an empty cache and display nothing. To troubleshoot, deleting the cache and reindexing will fix most issues.

GameObject Stats GameObject attributes

The model viewer tab allows you to view the model associated with a given object (characters, items, scenery, and TileConstructions). This process automatically converts the .GR2 file to a .dae collada file in the same directory. The Model Files tab will list the files used to generate the model; hovering over the name of a model will provide you with the full pak file path and clicking it will open both the containing folder to the file as well as the default program associated .dae files on your system ie. Notepad++.

GameObject render

Making mod paks

  • Run bg3-mod-packer.exe
  • Select the location of your LSLib 1.15.9 (or higher) divine.exe
  • Drag and drop your unpacked workspace into the large blue box to generate an info.json file and .pak with the same name as your workspace.

Padme4000 has created a tutorial here on how to use this tool to create mods in more depth.

YT Tutorial

meta.lsx template:

<?xml version="1.0" encoding="UTF-8"?>
<save>
    <version major="4" minor="0" revision="0" build="49"/>
    <region id="Config">
        <node id="root">
            <children>
                <node id="Dependencies"/>
                <node id="ModuleInfo">
                    <attribute id="Author" type="LSWString" value="ModderName"/>
                    <attribute id="CharacterCreationLevelName" type="FixedString" value=""/>
                    <attribute id="Description" type="LSWString" value="Some description text"/>
                    <attribute id="Folder" type="LSWString" value="ModFolder"/>
                    <attribute id="GMTemplate" type="FixedString" value=""/>
                    <attribute id="LobbyLevelName" type="FixedString" value=""/>
                    <attribute id="MD5" type="LSString" value=""/>
                    <attribute id="MainMenuBackgroundVideo" type="FixedString" value=""/>
                    <attribute id="MenuLevelName" type="FixedString" value=""/>
                    <attribute id="Name" type="FixedString" value="Mod Name"/>
                    <attribute id="NumPlayers" type="uint8" value="4"/>
                    <attribute id="PhotoBooth" type="FixedString" value=""/>
                    <attribute id="StartupLevelName" type="FixedString" value=""/>
                    <attribute id="Tags" type="LSWString" value=""/>
                    <attribute id="Type" type="FixedString" value="Add-on"/>
                    <!-- Get new UUID from https://www.uuidgenerator.net/ -->
		    <attribute id="UUID" type="FixedString" value="00000000-0000-0000-0000-000000000000"/>
		    <attribute id="Version" type="int32" value="1"/>
                    <children>
                        <node id="PublishVersion">
                            <attribute id="Version" type="int32" value="268435456"/>
                        </node>
                        <node id="Scripts"/>
                        <node id="TargetModes">
                            <children>
                                <node id="Target">
                                    <attribute id="Object" type="FixedString" value="Story"/>
                                </node>
                            </children>
                        </node>
                    </children>
                </node>
            </children>
        </node>
    </region>
</save>

Correct folder structure of mod workspace:

ModFolder
|->Mods
  |->ModFolder
    |->meta.lsx
|->Public
  |->ModFolder
    |->Folder1
      |->File.lsx
    |->Folder2
      |->File.lsb
    |->Folder3
      |->File.lsf

Playable Minotaur example:
Minotaur workspace

If you do everything correctly, you will get a .zip of the same name as your mod directory immediately next to it, containing your pak(s) and info.json metadata file. It is compatible with ShadowChild's Candor Mod Manager

Linux Users

I have been told that Bottles is a good resource for running this application under Linux

Baldur's Gate 3 Modder's Multitool is unofficial fan content, not approved/endorsed by Larian Studios. Portions of the materials used are property of Wizards of the Coast LLC and Larian Studios Games ltd.

bg3-modders-multitool's People

Contributors

finaudmods avatar iceriny avatar logosworks avatar nandez avatar shadowchild avatar shinyhobo avatar ultraporing avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.