Skip to content

Commit

Permalink
expanded on manual bbscript parsing/rebuilding
Browse files Browse the repository at this point in the history
  • Loading branch information
WistfulHopes committed Jan 17, 2024
1 parent 03faa95 commit b6844ee
Show file tree
Hide file tree
Showing 4 changed files with 33 additions and 5 deletions.
33 changes: 31 additions & 2 deletions src/modding-bbs/bbs-io.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,8 @@ TODO: Upload generic versions of Broscar's DBFZ scripts

## Manual method

Manually extracting and injecting scripts is preferred if other assets need to be packaged.

### Bulk extracting all BBS from the game

Open the game's pak in FModel, and open the package search window (Ctrl + Shift + F). Type in `BBS_`.
Expand All @@ -30,10 +32,37 @@ for f in `find "Output" -type f -name "BBS_*"`
done
```

### Extract a script from a UE4 container
### Extract a script from the .uasset/.uexp

Using [Pangaea's ggst-bbs-unpacker](https://github.com/super-continent/ggst-bbs-unpacker/releases/tag/0.0.1), scripts (and other ArcSys binaries) can be extracted. After exporting the .uasset from FModel, open the .uasset *and* .uexp files using ggst-bbs-unpacker. Then, click Extract and save it in a location of your choosing.

### Parse the script

Using [Pangaea's BBScript tool](https://github.com/super-continent/bbscript/releases/tag/1.0.0) by itself, you will need to use the command line. **If you have never used the command line before, find a tutorial on it first.**

In the command line, run ```cmd
bbscript parse <config> <binary> <text>
```
where <config> is the matching configuration filename in static_db, <binary> is the extracted script, and <text> is the file to parse to.
<div class="warning">
If the file to parse to already exists, an error will be thrown to prevent accidental overwriting. If you do wish to overwrite the given file, put `-o` after the command.
</div>
### Rebuild the script
### Inject the script back into the UE4 container
The BBScript tool can also rebuild scripts from text back into binary form.
In the command line, run ```cmd
bbscript rebuild <config> <text> <binary>
```

where <config> is the matching configuration filename in static_db, <text> is the modified text, and <binary> is the script to write to.


### Inject the script back into the .uasset/.uexp

ggst-bbs-unpacker can also inject scripts and other binaries back into the .uasset/.uexp. Open the original .uasset and .uexp. Then, select the file you wish to inject. Finally, click Inject.
1 change: 0 additions & 1 deletion src/modding-ui/applicable.md

This file was deleted.

2 changes: 1 addition & 1 deletion src/modding-ui/pitfalls.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,4 +7,4 @@ Modding UI can be quite complicated, and you may run into crashes. Here are seve
- If the game crashes upon loading the UI element, there is a very good chance that you deleted a part of the widget. **Never delete parts of the widget, as the game may try to reference it.** Even something as innocuous as a text box could crash the game if it was missing. Instead, set its visibility to Collapsed.
- (Strive/DNF) If your UI elements don't appear in-game, you most likely did not package the Allset widget. In earlier versions of Unreal Engine, the widget hierarchy is "baked" into every widget, and only the directly created widget has its hierarchy referenced. This means that all of your changes to the child widget will be disregarded unless you also package the Allset widget.
- Some widgets may also contain Blueprint code. If this code is not properly replicated, the game may act unpredictably. Replicating this code deserves a section of its own, but I will leave you with the primary tool I use to replicate blueprint code: [kismet-analyzer by trumank](https://github.com/trumank/kismet-analyzer/releases/latest).
- If parts of a widget are pure black, there is a good chance that they use a material. The material can be found under the Details panel for the UI element. The autogenerated materials are broken by default for UI elements, but they likely contain a texture that can be used to preview the material. You'll know if it's the right one because it will resemble the UI element in-game. Simply plug that texture into Final Color, and its alpha channel into Opacity and Opacity Mask.
- If parts of a widget show up as pure black in the editor, they probably use a material. The material can be found under the Details panel for the UI element. The autogenerated materials are broken by default for UI elements, but they likely contain a texture that can be used to preview the material. You'll know if it's the right one because it will resemble the UI element in-game. Simply plug that texture into Final Color, and its alpha channel into Opacity and Opacity Mask.
2 changes: 1 addition & 1 deletion src/modding-ui/ui-intro.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,4 +4,4 @@

Due to limitations of creating custom projects in earlier Unreal Engine versions, this section is not applicable to Dragon Ball FighterZ or Granblue Fantasy Versus. At the current moment, **it is not currently feasible to mod UI in those games.**

If you are modding Guilty Gear -Strive-, DNF Duel, or Granblue Fantasy Versus Rising, continue with this section.
If you are modding Guilty Gear -Strive-, DNF Duel, or Granblue Fantasy Versus Rising, continue with this section.

0 comments on commit b6844ee

Please sign in to comment.